Index: /trunk/src/org/openstreetmap/josm/gui/MapViewState.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapViewState.java	(revision 10397)
+++ /trunk/src/org/openstreetmap/josm/gui/MapViewState.java	(revision 10398)
@@ -172,5 +172,5 @@
      */
     public AffineTransform getAffineTransform() {
-        return new AffineTransform(1.0 / scale, 0.0, 0.0, -1.0 / scale, topLeft.east() / scale,
+        return new AffineTransform(1.0 / scale, 0.0, 0.0, -1.0 / scale, -topLeft.east() / scale,
                 topLeft.north() / scale);
     }
Index: /trunk/test/unit/org/openstreetmap/josm/gui/MapViewStateTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/MapViewStateTest.java	(revision 10397)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/MapViewStateTest.java	(revision 10398)
@@ -3,4 +3,8 @@
 
 import static org.junit.Assert.assertEquals;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.util.Arrays;
 
 import org.junit.Before;
@@ -100,5 +104,4 @@
         assertHasViewCoords(WIDTH / 2, HEIGHT / 2, p);
 
-
         EastNorth eastnorth = p.getEastNorth();
         LatLon shouldLatLon = Main.getProjection().getWorldBoundsLatLon().getCenter();
@@ -117,3 +120,19 @@
         assertEquals("north", 3, p2.getEastNorth().north(), 0.01);
     }
+
+    /**
+     * Test {@link MapViewState#getAffineTransform()}
+     */
+    @Test
+    public void testGetAffineTransform() {
+        for (EastNorth en : Arrays.asList(new EastNorth(100, 100), new EastNorth(0, 0), new EastNorth(300, 200),
+                new EastNorth(-1, -2.5))) {
+            MapViewPoint should = state.getPointFor(en);
+            AffineTransform transform = state.getAffineTransform();
+            Point2D result = transform.transform(new Point2D.Double(en.getX(), en.getY()), null);
+
+            assertEquals("x", should.getInViewX(), result.getX(), 0.01);
+            assertEquals("y", should.getInViewY(), result.getY(), 0.01);
+        }
+    }
 }
