Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 10370)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 10371)
@@ -75,5 +75,4 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.PrimitiveDeepCopy;
-import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
@@ -769,7 +768,5 @@
      */
     public final void addLayer(final Layer layer) {
-        BoundingXYVisitor v = new BoundingXYVisitor();
-        layer.visitBoundingBox(v);
-        addLayer(layer, v.getBounds());
+        addLayer(layer, layer.getViewProjectionBounds());
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 10370)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 10371)
@@ -259,5 +259,5 @@
                 final OsmDataLayer layer = createNewLayer(newLayerName);
                 if (Main.main != null)
-                    Main.main.addLayer(layer, computeBbox(bounds));
+                    Main.main.addLayer(layer);
                 return layer;
             }
Index: trunk/src/org/openstreetmap/josm/gui/layer/Layer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 10370)
+++ trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 10371)
@@ -23,4 +23,5 @@
 import org.openstreetmap.josm.actions.SaveActionBase;
 import org.openstreetmap.josm.actions.SaveAsAction;
+import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.data.projection.Projection;
@@ -593,3 +594,16 @@
         }
     }
+
+    /**
+     * Gets the {@link ProjectionBounds} for this layer to be visible to the user. This can be the exact bounds, the UI handles padding. Return
+     * <code>null</code> if you cannot provide this information. The default implementation uses the bounds from
+     * {@link #visitBoundingBox(BoundingXYVisitor)}.
+     * @return The bounds for this layer.
+     * @since 10371
+     */
+    public ProjectionBounds getViewProjectionBounds() {
+        BoundingXYVisitor v = new BoundingXYVisitor();
+        visitBoundingBox(v);
+        return v.getBounds();
+    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 10370)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 10371)
@@ -49,4 +49,5 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.DataSource;
+import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.conflict.Conflict;
@@ -1079,3 +1080,13 @@
         return dialog;
     }
+
+    @Override
+    public ProjectionBounds getViewProjectionBounds() {
+        BoundingXYVisitor v = new BoundingXYVisitor();
+        v.visit(data.getDataSourceBoundingBox());
+        if (!v.hasExtend()) {
+            v.computeBoundingBox(data.getNodes());
+        }
+        return v.getBounds();
+    }
 }
Index: trunk/src/org/openstreetmap/josm/io/OsmImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 10370)
+++ trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 10371)
@@ -15,5 +15,4 @@
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -97,10 +96,5 @@
             public void run() {
                 OsmDataLayer layer = data.getLayer();
-                BoundingXYVisitor v = new BoundingXYVisitor();
-                v.visit(layer.data.getDataSourceBoundingBox());
-                if (!v.hasExtend()) {
-                    v.computeBoundingBox(layer.data.getNodes());
-                }
-                Main.main.addLayer(layer, v.getBounds());
+                Main.main.addLayer(layer);
                 data.getPostLayerTask().run();
                 data.getLayer().onPostLoadFromFile();
