Index: /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 17401)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 17402)
@@ -920,10 +920,4 @@
     public void loadAllTiles(boolean force) {
         TileSet ts = getVisibleTileSet();
-
-        // if there is more than 18 tiles on screen in any direction, do not load all tiles!
-        if (ts.tooLarge()) {
-            Logging.warn("Not downloading all tiles because there is more than 18 tiles on an axis!");
-            return;
-        }
         ts.loadAllTiles(force);
         invalidate();
@@ -1291,6 +1285,12 @@
 
         private void loadAllTiles(boolean force) {
-            if (!getDisplaySettings().isAutoLoad() && !force)
+            if (!getDisplaySettings().isAutoLoad() && !force) {
                 return;
+            }
+            if (tooLarge()) {
+                // Too many tiles... refuse to download
+                Logging.warn("Not downloading all tiles because there is more than 18 tiles on an axis!");
+                return;
+            }
             List<Tile> allTiles = allTilesCreate();
             allTiles.sort(getTileDistanceComparator());
@@ -1305,13 +1305,12 @@
         private void overloadTiles() {
             int overload = 1;
+
             int minXo = Utils.clamp(minX-overload, tileSource.getTileXMin(zoom), tileSource.getTileXMax(zoom));
             int maxXo = Utils.clamp(maxX+overload, tileSource.getTileXMin(zoom), tileSource.getTileXMax(zoom));
             int minYo = Utils.clamp(minY-overload, tileSource.getTileYMin(zoom), tileSource.getTileYMax(zoom));
             int maxYo = Utils.clamp(maxY+overload, tileSource.getTileYMin(zoom), tileSource.getTileYMax(zoom));
-            for (int x = minXo; x < maxXo; ++x) {
-                for (int y = minYo; y < maxYo; ++y) {
-                    loadTile(getOrCreateTile(x, y, zoom), false);
-                }
-            }
+
+            TileSet ts = new TileSet(new TileXY(minXo, minYo), new TileXY(maxXo, maxYo), zoom);
+            ts.loadAllTiles(false);
         }
 
@@ -1550,10 +1549,7 @@
         TileSet ts = dts.getTileSet(zoom);
 
-        // Too many tiles... refuse to download
-        if (!ts.tooLarge()) {
-            // try to load tiles from desired zoom level, no matter what we will show (for example, tiles from previous zoom level
-            // on zoom in)
-            ts.loadAllTiles(false);
-        }
+        // try to load tiles from desired zoom level, no matter what we will show (for example, tiles from previous zoom level
+        // on zoom in)
+        ts.loadAllTiles(false);
 
         if (displayZoomLevel != zoom) {
