yeah that would be expected. This code works in World space, not View space. If your camera angle is fixed then it is a simple matter of flipping / rotating the values.
For instance, if you press up but it goes down, then you want to use Atan2(-direction.Y, direction.X);
For the problem of facing left/right when pressing up/down, you need to add a constant rotation on to the result of the Atan2 method. This is quite simple if you remember that you are working with radians here. So a 90 degree rotation is MathHelper.PiOver2.
eg. to rotate the ship by 90 degrees and flip the vertical direction, you would use
float direction = (float)Math.Atan2(-direction.Y, direction.X) + MathHelper.PiOver2;
You will need to mess with the values a bit to get it correct, but it all depends on where your camera is placed.
Now, if you camera angle is NOT fixed, then things get a lot more tricky and it will require some further discussion.