diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
index b27acb4bc..bb7256f4a 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
@@ -620,8 +620,8 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         FontRenderContext frc = g.getFontRenderContext();
         Rectangle2D bounds = text.font.getStringBounds(s, frc);

-        double x = p.getInViewX() + bs.xOffset;
-        double y = p.getInViewY() + bs.yOffset;
+        double x = bs.xOffset;
+        double y = bs.yOffset;
         /**
          *
          *       left-above __center-above___ right-above
@@ -660,7 +660,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
             } else throw new AssertionError();
         }

-        final MapViewPoint viewPoint = mapState.getForView(x, y);
+        final MapViewPoint viewPoint = mapState.getForView(p.getInViewX(), p.getInViewY());
         final AffineTransform at = new AffineTransform();
         at.setToTranslation(
                 Math.round(viewPoint.getInViewX()),
@@ -668,6 +668,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         if (!RotationAngle.NO_ROTATION.equals(text.rotationAngle)) {
             at.rotate(text.rotationAngle.getRotationAngle(n));
         }
+        at.translate(x, y);
         displayText(n, text, s, at);
         g.setFont(defaultFont);
     }
