Index: src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 1479)
+++ src/org/openstreetmap/josm/gui/NavigatableComponent.java	(working copy)
@@ -149,7 +149,7 @@
 
     /**
      * Return the nearest point to the screen point given.
-     * If a node within 10 pixel is found, the nearest node is returned.
+     * If a node within snapDistance pixel is found, the nearest node is returned.
      */
     public final Node getNearestNode(Point p) {
         double minDistanceSq = Double.MAX_VALUE;
@@ -159,14 +159,17 @@
                 continue;
             Point sp = getPoint(n.eastNorth);
             double dist = p.distanceSq(sp);
-            if (minDistanceSq > dist && dist < snapDistance) {
-                minDistanceSq = p.distanceSq(sp);
+            if (dist < snapDistance && dist < minDistanceSq) {
+                minDistanceSq = dist;
                 minPrimitive = n;
             }
-            // prefer already selected node when multiple nodes on one point
-            else if(minDistanceSq == dist && n.selected && !minPrimitive.selected)
+            // when multiple nodes on one point, prefer nodes later
+            // in the list (i.e. newer nodes) except when the current minimum
+            // is an already selected node
+            else if (dist == minDistanceSq)
             {
-                minPrimitive = n;
+                if (!minPrimitive.selected)
+                    minPrimitive = n;
             }
         }
         return minPrimitive;
