Libgdx Coordinates to Box2D using Viewport

I have a Body that I want to move towards the touch position (screenX, screenY). My current method for doing this works, but only for when the screen resolution is the same as the viewport width and height.

@Override
	public boolean touchUp(int screenX, int screenY, int pointer, int button) {
		Vector3 touch = camera.unproject(new Vector3(screenX, screenY, 0));
		Vector2 direction = new Vector2((touch.x - currentBody.getPosition().x), (touch.y - currentBody.getPosition().y));
//normalise, scale etc...

I think the part I’m stuck on is converting the camera coordinate to the Box2D coordinate. When I resize the window, the Body doesn’t move directly at the mouse, it’s a bit off. I’m using a FitViewport with a virtual resolution of 640x1136

Just a tipp, something i used to do:
Use a Viewport, that fits your Box2D World.
How do i mean that?
Well, in box2d everything is calculated in meters. So if you have a character, which is 1m tall (in the box2d world), think about how tall you want it to be on the screen.
If you want it to be 1/10 as tall as the screen, use a Viewport height of 10.
Now depending on that Viewport heigth and the Aspect Ratio calculate the Viewport Width.
Now you can use the position of the box2d bodys directly, as the box2d world and your world use the same units.
To get the touch/click point in units (instead of pixels) you can use “unproject()”.