Index: src/org/openstreetmap/josm/data/coor/ILatLon.java
===================================================================
--- src/org/openstreetmap/josm/data/coor/ILatLon.java	(revision 12721)
+++ src/org/openstreetmap/josm/data/coor/ILatLon.java	(working copy)
@@ -43,7 +43,9 @@
      * <p>Uses the {@link Main#getProjection() global projection} to project the lan/lon-coordinates.</p>
      *
      * @return the east north coordinates or {@code null} if #is
+     * @deprecated use {@link #getEastNorth(org.openstreetmap.josm.data.projection.Projecting)}
      */
+    @Deprecated
     default EastNorth getEastNorth() {
         return getEastNorth(Main.getProjection());
     }
Index: src/org/openstreetmap/josm/data/coor/LatLon.java
===================================================================
--- src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 12721)
+++ src/org/openstreetmap/josm/data/coor/LatLon.java	(working copy)
@@ -307,7 +307,7 @@
         case DECIMAL_DEGREES: return cDdFormatter.format(y);
         case DEGREES_MINUTES_SECONDS: return degreesMinutesSeconds(y) + ((y < 0) ? SOUTH : NORTH);
         case NAUTICAL: return degreesMinutes(y) + ((y < 0) ? SOUTH : NORTH);
-        case EAST_NORTH: return cDdFormatter.format(this.getEastNorth().north());
+        case EAST_NORTH: return cDdFormatter.format(this.getEastNorth(Main.getProjection()).north());
         default: return "ERR";
         }
     }
@@ -327,7 +327,7 @@
         case DECIMAL_DEGREES: return cDdFormatter.format(x);
         case DEGREES_MINUTES_SECONDS: return degreesMinutesSeconds(x) + ((x < 0) ? WEST : EAST);
         case NAUTICAL: return degreesMinutes(x) + ((x < 0) ? WEST : EAST);
-        case EAST_NORTH: return cDdFormatter.format(this.getEastNorth().east());
+        case EAST_NORTH: return cDdFormatter.format(this.getEastNorth(Main.getProjection()).east());
         default: return "ERR";
         }
     }
Index: src/org/openstreetmap/josm/data/gpx/GpxData.java
===================================================================
--- src/org/openstreetmap/josm/data/gpx/GpxData.java	(revision 12721)
+++ src/org/openstreetmap/josm/data/gpx/GpxData.java	(working copy)
@@ -416,10 +416,10 @@
         for (GpxTrack track : getTracks()) {
             for (GpxTrackSegment seg : track.getSegments()) {
                 WayPoint r = null;
-                for (WayPoint S : seg.getWayPoints()) {
-                    EastNorth en = S.getEastNorth();
+                for (WayPoint wpSeg : seg.getWayPoints()) {
+                    EastNorth en = wpSeg.getEastNorth(Main.getProjection());
                     if (r == null) {
-                        r = S;
+                        r = wpSeg;
                         rx = en.east();
                         ry = en.north();
                         x = px - rx;
@@ -454,17 +454,17 @@
                                 double nx = rx - rnoverRS * b;
                                 double ny = ry + rnoverRS * a;
                                 bestEN = new EastNorth(nx, ny);
-                                bestTime = r.time + rnoverRS * (S.time - r.time);
+                                bestTime = r.time + rnoverRS * (wpSeg.time - r.time);
                                 pnminsq = pnsq;
                             }
                         }
-                        r = S;
+                        r = wpSeg;
                         rx = sx;
                         ry = sy;
                     }
                 }
                 if (r != null) {
-                    EastNorth c = r.getEastNorth();
+                    EastNorth c = r.getEastNorth(Main.getProjection());
                     /* if there is only one point in the seg, it will do this twice, but no matter */
                     rx = c.east();
                     ry = c.north();
Index: src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/Node.java	(revision 12721)
+++ src/org/openstreetmap/josm/data/osm/Node.java	(working copy)
@@ -99,6 +99,16 @@
         return lon;
     }
 
+    /**
+     * Replies the projected east/north coordinates.
+     * <p>
+     * Uses the {@link Main#getProjection() global projection} to project the lan/lon-coordinates.
+     * @return the east north coordinates or {@code null} if #is
+     */
+    public EastNorth getEastNorth() {
+        return getEastNorth(Main.getProjection());
+    }
+
     @Override
     public EastNorth getEastNorth(Projecting projection) {
         if (!isLatLonKnown()) return null;
Index: src/org/openstreetmap/josm/data/osm/NodeData.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/NodeData.java	(revision 12721)
+++ src/org/openstreetmap/josm/data/osm/NodeData.java	(working copy)
@@ -75,6 +75,7 @@
     }
 
     @Override
+    @Deprecated
     public EastNorth getEastNorth() {
         // No internal caching of projected coordinates needed. In contrast to getEastNorth()
         // on Node, this method is rarely used. Caching would be overkill.
Index: src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 12721)
+++ src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(working copy)
@@ -73,15 +73,20 @@
     /**
      * Visiting call for lat/lon.
      * @param latlon lat/lon
+     * @since xxx (public for ILatLon parameter)
      */
-    public void visit(LatLon latlon) {
+    public void visit(ILatLon latlon) {
         if (latlon != null) {
-            visit((ILatLon) latlon);
+            visit(latlon.getEastNorth(Main.getProjection()));
         }
     }
 
-    private void visit(ILatLon latlon) {
-        visit(latlon.getEastNorth());
+    /**
+     * Visiting call for lat/lon.
+     * @param latlon lat/lon
+     */
+    public void visit(LatLon latlon) {
+        visit((ILatLon) latlon);
     }
 
     /**
@@ -137,10 +142,10 @@
         LatLon maxLatlon = Main.getProjection().eastNorth2latlon(bounds.getMax());
         bounds = new ProjectionBounds(new LatLon(
                         Math.max(-90, minLatlon.lat() - enlargeDegree),
-                        Math.max(-180, minLatlon.lon() - enlargeDegree)).getEastNorth(),
+                        Math.max(-180, minLatlon.lon() - enlargeDegree)).getEastNorth(Main.getProjection()),
                 new LatLon(
                         Math.min(90, maxLatlon.lat() + enlargeDegree),
-                        Math.min(180, maxLatlon.lon() + enlargeDegree)).getEastNorth());
+                        Math.min(180, maxLatlon.lon() + enlargeDegree)).getEastNorth(Main.getProjection()));
     }
 
     /**
Index: src/org/openstreetmap/josm/data/projection/Projections.java
===================================================================
--- src/org/openstreetmap/josm/data/projection/Projections.java	(revision 12721)
+++ src/org/openstreetmap/josm/data/projection/Projections.java	(working copy)
@@ -18,6 +18,7 @@
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.datum.Datum;
 import org.openstreetmap.josm.data.projection.datum.GRS80Datum;
@@ -191,13 +192,24 @@
      *
      * @param ll the geographical point to convert (in WGS84 lat/lon)
      * @return the corresponding east/north coordinates
+     * @since xxx
      */
-    public static EastNorth project(LatLon ll) {
+    public static EastNorth project(ILatLon ll) {
         if (ll == null) return null;
         return Main.getProjection().latlon2eastNorth(ll);
     }
 
     /**
+     * Convert from lat/lon to easting/northing using the current projection.
+     *
+     * @param ll the geographical point to convert (in WGS84 lat/lon)
+     * @return the corresponding east/north coordinates
+     */
+    public static EastNorth project(LatLon ll) {
+        return project((ILatLon) ll);
+    }
+
+    /**
      * Convert from easting/norting to lat/lon using the current projection.
      *
      * @param en the geographical point to convert (in projected coordinates)
Index: src/org/openstreetmap/josm/gui/MapViewState.java
===================================================================
--- src/org/openstreetmap/josm/gui/MapViewState.java	(revision 12721)
+++ src/org/openstreetmap/josm/gui/MapViewState.java	(working copy)
@@ -394,7 +394,7 @@
     private static EastNorth calculateDefaultCenter() {
         Bounds b = Optional.ofNullable(DownloadDialog.getSavedDownloadBounds()).orElseGet(
                 () -> Main.getProjection().getWorldBoundsLatLon());
-        return b.getCenter().getEastNorth();
+        return b.getCenter().getEastNorth(Main.getProjection());
     }
 
     /**
Index: src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 12721)
+++ src/org/openstreetmap/josm/gui/NavigatableComponent.java	(working copy)
@@ -515,15 +515,26 @@
      * @param latlon The point, where this geopoint would be drawn.
      * @return The point on screen where "point" would be drawn, relative to the own top/left.
      */
-    public Point2D getPoint2D(LatLon latlon) {
+    public Point2D getPoint2D(ILatLon latlon) {
         if (latlon == null) {
             return new Point();
         } else {
-            return getPoint2D(latlon.getEastNorth());
+            return getPoint2D(latlon.getEastNorth(Main.getProjection()));
         }
     }
 
     /**
+     * Return the point on the screen where this Coordinate would be.
+     *
+     * Alternative: {@link #getState()}, then {@link MapViewState#getPointFor(ILatLon)}
+     * @param latlon The point, where this geopoint would be drawn.
+     * @return The point on screen where "point" would be drawn, relative to the own top/left.
+     */
+    public Point2D getPoint2D(LatLon latlon) {
+        return getPoint2D((ILatLon) latlon);
+    }
+
+    /**
      * Return the point on the screen where this Node would be.
      *
      * Alternative: {@link #getState()}, then {@link MapViewState#getPointFor(ILatLon)}
@@ -550,8 +561,9 @@
      * @param latlon lat/lon
      * @return point
      * @see #getPoint2D(LatLon)
+     * @since xxx
      */
-    public Point getPoint(LatLon latlon) {
+    public Point getPoint(ILatLon latlon) {
         Point2D d = getPoint2D(latlon);
         return new Point((int) d.getX(), (int) d.getY());
     }
@@ -558,6 +570,16 @@
 
     /**
      * looses precision, may overflow (depends on p and current scale)
+     * @param latlon lat/lon
+     * @return point
+     * @see #getPoint2D(LatLon)
+     */
+    public Point getPoint(LatLon latlon) {
+        return getPoint((ILatLon) latlon);
+    }
+
+    /**
+     * looses precision, may overflow (depends on p and current scale)
      * @param n node
      * @return point
      * @see #getPoint2D(Node)
@@ -689,12 +711,21 @@
     /**
      * Zoom to given lat/lon.
      * @param newCenter new center coordinates
+     * @since xxx
      */
-    public void zoomTo(LatLon newCenter) {
+    public void zoomTo(ILatLon newCenter) {
         zoomTo(Projections.project(newCenter));
     }
 
     /**
+     * Zoom to given lat/lon.
+     * @param newCenter new center coordinates
+     */
+    public void zoomTo(LatLon newCenter) {
+        zoomTo((ILatLon) newCenter);
+    }
+
+    /**
      * Create a thread that moves the viewport to the given center in an animated fashion.
      * @param newCenter new east/north center
      */
Index: src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTransferData.java
===================================================================
--- src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTransferData.java	(revision 12721)
+++ src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTransferData.java	(working copy)
@@ -131,7 +131,7 @@
         BoundingXYVisitor visitor = new BoundingXYVisitor();
         for (PrimitiveData pd : getAll()) {
             if (pd instanceof NodeData && !pd.isIncomplete()) {
-                visitor.visit(((NodeData) pd).getEastNorth());
+                visitor.visit(((NodeData) pd));
             }
         }
         ProjectionBounds bounds = visitor.getBounds();
Index: src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
===================================================================
--- src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java	(revision 12721)
+++ src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java	(working copy)
@@ -72,7 +72,7 @@
             try {
                 if (data instanceof NodeData) {
                     NodeData nodeData = (NodeData) data;
-                    nodeData.setEastNorth(nodeData.getEastNorth().add(offset));
+                    nodeData.setEastNorth(nodeData.getEastNorth(Main.getProjection()).add(offset));
                 } else if (data instanceof WayData) {
                     updateNodes(newIds.get(OsmPrimitiveType.NODE), data);
                 } else if (data instanceof RelationData) {
Index: src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDataText.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDataText.java	(revision 12721)
+++ src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDataText.java	(working copy)
@@ -190,8 +190,8 @@
         BBox bbox = o.getBBox();
         if (bbox != null) {
             add(tr("Bounding box: "), bbox.toStringCSV(", "));
-            EastNorth bottomRigth = bbox.getBottomRight().getEastNorth();
-            EastNorth topLeft = bbox.getTopLeft().getEastNorth();
+            EastNorth bottomRigth = bbox.getBottomRight().getEastNorth(Main.getProjection());
+            EastNorth topLeft = bbox.getTopLeft().getEastNorth(Main.getProjection());
             add(tr("Bounding box (projected): "),
                     Double.toString(topLeft.east()), ", ",
                     Double.toString(bottomRigth.north()), ", ",
Index: src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(revision 12721)
+++ src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(working copy)
@@ -650,7 +650,7 @@
                     old = null;
                     continue;
                 }
-                Point screen = mv.getPoint(trkPnt.getEastNorth());
+                Point screen = mv.getPoint(trkPnt);
                 // skip points that are on the same screenposition
                 if (trkPnt.drawLine && old != null && ((old.x != screen.x) || (old.y != screen.y))) {
                     g.setColor(trkPnt.customColoring);
@@ -680,7 +680,7 @@
                     continue;
                 }
                 if (trkPnt.drawLine) {
-                    Point screen = mv.getPoint(trkPnt.getEastNorth());
+                    Point screen = mv.getPoint(trkPnt);
                     // skip points that are on the same screenposition
                     if (old != null
                             && (oldA == null || screen.x < oldA.x - delta || screen.x > oldA.x + delta
@@ -710,7 +710,7 @@
                     continue;
                 }
                 if (trkPnt.drawLine) {
-                    Point screen = mv.getPoint(trkPnt.getEastNorth());
+                    Point screen = mv.getPoint(trkPnt);
                     // skip points that are on the same screenposition
                     if (old != null
                             && (oldA == null || screen.x < oldA.x - delta || screen.x > oldA.x + delta
@@ -745,7 +745,7 @@
                 if (Double.isNaN(c.lat()) || Double.isNaN(c.lon())) {
                     continue;
                 }
-                Point screen = mv.getPoint(trkPnt.getEastNorth());
+                Point screen = mv.getPoint(trkPnt);
 
                 if (hdopCircle && trkPnt.get(GpxConstants.PT_HDOP) != null) {
                     // hdop value
@@ -786,7 +786,7 @@
                     continue;
                 }
                 if (!trkPnt.drawLine) {
-                    Point screen = mv.getPoint(trkPnt.getEastNorth());
+                    Point screen = mv.getPoint(trkPnt);
                     g.drawRect(screen.x, screen.y, 0, 0);
                 }
             } // end for trkpnt
@@ -802,7 +802,7 @@
                 if (Double.isNaN(c.lat()) || Double.isNaN(c.lon())) {
                     continue;
                 }
-                Point screen = mv.getPoint(trkPnt.getEastNorth());
+                Point screen = mv.getPoint(trkPnt);
                 g.setColor(trkPnt.customColoring);
                 g.drawRect(screen.x, screen.y, 0, 0);
             } // end for trkpnt
@@ -852,7 +852,7 @@
         for (WayPoint trkPnt : visibleSegments) {
 
             // transform coordinates
-            final Point paintPnt = mv.getPoint(trkPnt.getEastNorth());
+            final Point paintPnt = mv.getPoint(trkPnt);
 
             // skip single points
             if (lastPaintPnt != null && trkPnt.drawLine && !lastPaintPnt.equals(paintPnt)) {
@@ -1111,7 +1111,7 @@
         for (WayPoint trkPnt : listSegm) {
 
             // get transformed coordinates
-            final Point paintPnt = mv.getPoint(trkPnt.getEastNorth());
+            final Point paintPnt = mv.getPoint(trkPnt);
 
             // end of line segment or end of list reached
             if (!trkPnt.drawLine || (lastPnt == trkPnt)) {
@@ -1361,7 +1361,7 @@
         for (WayPoint trkPnt : listSegm) {
 
             // get transformed coordinates
-            final Point paintPnt = mv.getPoint(trkPnt.getEastNorth());
+            final Point paintPnt = mv.getPoint(trkPnt);
 
             // end of line segment or end of list reached
             if (trkPnt.drawLine && null != lastPnt) {
Index: src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 12721)
+++ src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(working copy)
@@ -186,7 +186,7 @@
                 if (waypoints.contains(w)) {
                     continue;
                 }
-                WayPoint wNear = layer.data.nearestPointOnTrack(w.getEastNorth(), snapDistance);
+                WayPoint wNear = layer.data.nearestPointOnTrack(w.getEastNorth(Main.getProjection()), snapDistance);
                 if (wNear != null) {
                     WayPoint wc = new WayPoint(w.getCoor());
                     wc.time = wNear.time;
Index: src/org/openstreetmap/josm/gui/layer/markerlayer/ButtonMarker.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/markerlayer/ButtonMarker.java	(revision 12721)
+++ src/org/openstreetmap/josm/gui/layer/markerlayer/ButtonMarker.java	(working copy)
@@ -38,7 +38,7 @@
     }
 
     @Override public boolean containsPoint(Point p) {
-        Point screen = MainApplication.getMap().mapView.getPoint(getEastNorth());
+        Point screen = MainApplication.getMap().mapView.getPoint(this);
         buttonRectangle.setLocation(screen.x+4, screen.y+2);
         return buttonRectangle.contains(p);
     }
@@ -48,7 +48,7 @@
             super.paint(g, mv, mousePressed, showTextOrIcon);
             return;
         }
-        Point screen = mv.getPoint(getEastNorth());
+        Point screen = mv.getPoint(this);
         buttonRectangle.setLocation(screen.x+4, screen.y+2);
         paintIcon(mv, g, screen.x+4, screen.y+2);
         Border b;
Index: src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java	(revision 12721)
+++ src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java	(working copy)
@@ -22,9 +22,11 @@
 
 import javax.swing.ImageIcon;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
 import org.openstreetmap.josm.data.coor.CachedLatLon;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.WayPoint;
@@ -74,7 +76,7 @@
  *
  * @author Frederik Ramm
  */
-public class Marker implements TemplateEngineDataProvider {
+public class Marker implements TemplateEngineDataProvider, ILatLon {
 
     public static final class TemplateEntryProperty extends CachedProperty<TemplateEntry> {
         // This class is a bit complicated because it supports both global and per layer settings. I've added per layer settings because
@@ -317,11 +319,29 @@
     }
 
     /**
+     * @since xxx
+     */
+    @Override
+    public double lon() {
+        return coor == null ? Double.NaN : coor.lon();
+    }
+
+    /**
+     * @since xxx
+     */
+    @Override
+    public double lat() {
+        return coor == null ? Double.NaN : coor.lat();
+    }
+
+    /**
      * Returns the marker's projected coordinates.
      * @return The marker's projected coordinates (easting/northing)
+     * @deprecated use {@link #getEastNorth(org.openstreetmap.josm.data.projection.Projecting)}
      */
+    @Deprecated
     public final EastNorth getEastNorth() {
-        return coor.getEastNorth();
+        return coor.getEastNorth(Main.getProjection());
     }
 
     /**
@@ -353,7 +373,7 @@
      * @param showTextOrIcon true if text and icon shall be drawn
      */
     public void paint(Graphics g, MapView mv, boolean mousePressed, boolean showTextOrIcon) {
-        Point screen = mv.getPoint(getEastNorth());
+        Point screen = mv.getPoint(this);
         if (symbol != null && showTextOrIcon) {
             paintIcon(mv, g, screen.x-symbol.getIconWidth()/2, screen.y-symbol.getIconHeight()/2);
         } else {
Index: src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 12721)
+++ src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(working copy)
@@ -210,7 +210,7 @@
 
     @Override public void visitBoundingBox(BoundingXYVisitor v) {
         for (Marker mkr : data) {
-            v.visit(mkr.getEastNorth());
+            v.visit(mkr);
         }
     }
 
@@ -351,7 +351,7 @@
                 }
             }
         }
-        MainApplication.getMap().mapView.zoomTo(currentMarker.getEastNorth());
+        MainApplication.getMap().mapView.zoomTo(currentMarker);
     }
 
     @Override
@@ -370,7 +370,7 @@
                 }
             }
         }
-        MainApplication.getMap().mapView.zoomTo(currentMarker.getEastNorth());
+        MainApplication.getMap().mapView.zoomTo(currentMarker);
     }
 
     public static void playAudio() {
Index: src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java	(revision 12721)
+++ src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java	(working copy)
@@ -84,7 +84,7 @@
 
     @Override
     public boolean containsPoint(Point p) {
-        Point screen = MainApplication.getMap().mapView.getPoint(getEastNorth());
+        Point screen = MainApplication.getMap().mapView.getPoint(this);
         Rectangle r = new Rectangle(screen.x, screen.y, symbol.getIconWidth(),
                 symbol.getIconHeight());
         return r.contains(p);
@@ -213,7 +213,7 @@
             double closestAudioMarkerDistanceSquared = 1.0E100;
             for (Marker m : recent.parentLayer.data) {
                 if (m instanceof AudioMarker) {
-                    double distanceSquared = m.getEastNorth().distanceSq(en);
+                    double distanceSquared = m.getEastNorth(Main.getProjection()).distanceSq(en);
                     if (distanceSquared < closestAudioMarkerDistanceSquared) {
                         ca = (AudioMarker) m;
                         closestAudioMarkerDistanceSquared = distanceSquared;
@@ -282,7 +282,7 @@
      */
     public void paint(Graphics g, MapView mv) {
         if (time < 0.0) return;
-        Point screen = mv.getPoint(getEastNorth());
+        Point screen = mv.getPoint(this);
         paintIcon(mv, g, screen.x, screen.y);
     }
 
@@ -346,14 +346,14 @@
         if (w1 == null)
             return;
         setEastNorth(w2 == null ?
-                w1.getEastNorth() :
-                    w1.getEastNorth().interpolate(w2.getEastNorth(),
+                w1.getEastNorth(Main.getProjection()) :
+                    w1.getEastNorth(Main.getProjection()).interpolate(w2.getEastNorth(Main.getProjection()),
                             (audioTime - w1.time)/(w2.time - w1.time)));
         time = audioTime;
         MapView mapView = MainApplication.getMap().mapView;
         if (jumpToMarker) {
             jumpToMarker = false;
-            mapView.zoomTo(w1.getEastNorth());
+            mapView.zoomTo(w1);
         }
         mapView.repaint();
     }
