TBH I don't know why it didn't work before. Must have been some funky maths especially in the view/projection matrices that would lead to cancelling of the changes in position. Might have been giving negative screen coordinates for example...
For conversion you have two options:
- The Samples has a Camera2D class that is very useful and has the methods ConvertScreenToWorld() and ConvertWorldToScreen(). Probably you'd need a camera anyway in your simulation so might as well use that or extend it.
- Alternatively the TestBed sets a projection in such a way that XNA and Farseer coincide. In my opinion it's more elegant but I don't know if it's robust enough (The debug view doesn't deal with sprites). And you would still need to convert pixels to meters
In both cases it's better to deal with the transformation matrices rather that doing the conversion yourself. You will need those matrices in any case whether you draw primitives, use shaders or deal with the SpriteBatch.