Index: trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 7052)
+++ trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 7053)
@@ -251,7 +251,7 @@
             // Increase the bounding box by up to 100% to give more context.
             v.enlargeBoundingBoxLogarithmically(100);
-            // Make the bounding box at least 0.0005 degrees (≈ 56 m) wide to
+            // Make the bounding box at least 100 meter wide to
             // ensure reasonable zoom level when zooming onto single nodes.
-            v.enlargeToMinDegrees(0.0005);
+            v.enlargeToMinSize(Main.pref.getDouble("zoom_to_selection_min_size_in_meter", 100));
             break;
         case "download":
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 7052)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 7053)
@@ -163,5 +163,5 @@
     /**
      * Specify a degree larger than 0 in order to make the bounding box at least
-     * the specified amount of degrees high and wide. The value is ignored if the
+     * the specified size in width and height. The value is ignored if the
      * bounding box is already larger than the specified amount.
      * 
@@ -172,14 +172,13 @@
      * will be centered within the new bounding box.
      * 
-     * @param minDegrees
+     * @param size minimum width and height in meter
      */
-    public void enlargeToMinDegrees(double minDegrees) {
+    public void enlargeToMinSize(double size) {
         if (bounds == null)
             return;
-
-        EastNorth minEnlarge = Main.getProjection().latlon2eastNorth(new LatLon(0, minDegrees));
-
-        visit(bounds.getMin().add(-minEnlarge.east()/2, -minEnlarge.north()/2));
-        visit(bounds.getMax().add(+minEnlarge.east()/2, +minEnlarge.north()/2));
+        // convert size from meters to east/north units
+        double en_size = size * Main.map.mapView.getScale() / Main.map.mapView.getDist100Pixel() * 100;
+        visit(bounds.getMin().add(-en_size/2, -en_size/2));
+        visit(bounds.getMax().add(+en_size/2, +en_size/2));
     }
 
