Index: applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapLayer.java
===================================================================
--- applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapLayer.java	(revision 16461)
+++ applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapLayer.java	(revision 16462)
@@ -519,8 +519,8 @@
 		}
 
-		int tilesSpanned() {
+		double tilesSpanned() {
 			int x_span = z12x1 - z12x0;
 			int y_span = z12y1 - z12y0;
-			return x_span * y_span;
+			return Math.sqrt(1.0 * x_span * y_span);
 		}
 
@@ -585,5 +585,5 @@
 		int zoom = currentZoomLevel;
 
-		if (zoomDecreaseAllowed() && (ts.tilesSpanned() > (18*18))) {
+		if (zoomDecreaseAllowed() && (ts.tilesSpanned() > 18)) {
 			this.debug("too many tiles, decreasing zoom from " + currentZoomLevel);
             if (decreaseZoomLevel())
@@ -591,5 +591,5 @@
 			return;
 		}
-		if (zoomIncreaseAllowed() && (ts.tilesSpanned() <= 0)) {
+		if (zoomIncreaseAllowed() && (ts.tilesSpanned() < 1.0)) {
 			this.debug("doesn't even cover one tile (" + ts.tilesSpanned() 
 					   + "), increasing zoom from " + currentZoomLevel);
