Index: /trunk/src/org/openstreetmap/josm/data/imagery/JosmTemplatedTMSTileSource.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/JosmTemplatedTMSTileSource.java	(revision 15456)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/JosmTemplatedTMSTileSource.java	(revision 15456)
@@ -0,0 +1,33 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.imagery;
+
+import org.openstreetmap.gui.jmapviewer.JMapViewer;
+import org.openstreetmap.gui.jmapviewer.tilesources.TemplatedTMSTileSource;
+import org.openstreetmap.gui.jmapviewer.tilesources.TileSourceInfo;
+import org.openstreetmap.josm.gui.layer.TMSLayer;
+
+/**
+ * JOSM wrapper class that uses min/max zoom settings from imagery settings instead of JMapViewer defaults
+ *
+ */
+public class JosmTemplatedTMSTileSource extends TemplatedTMSTileSource {
+
+    /**
+     * Creates TMS tilesource based on tilesource info
+     * @param info
+     */
+    public JosmTemplatedTMSTileSource(TileSourceInfo info) {
+        super(info);
+    }
+
+    @Override
+    public int getMinZoom() {
+        return (minZoom == 0) ? TMSLayer.PROP_MIN_ZOOM_LVL.get() : minZoom;
+    }
+
+    // return no more, than JMapViewer supports
+    @Override
+    public int getMaxZoom() {
+        return Math.min((maxZoom == 0) ? TMSLayer.PROP_MAX_ZOOM_LVL.get() : maxZoom, JMapViewer.MAX_ZOOM);
+    }
+}
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 15455)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 15456)
@@ -150,5 +150,5 @@
     /** maximum zoom level supported */
     public static final int MAX_ZOOM = 30;
-    /** minium zoom level supported */
+    /** minimum zoom level supported */
     public static final int MIN_ZOOM = 2;
     private static final Font InfoFont = new Font("sansserif", Font.BOLD, 13);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/TMSLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/TMSLayer.java	(revision 15455)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/TMSLayer.java	(revision 15456)
@@ -7,4 +7,5 @@
 
 import org.apache.commons.jcs.access.CacheAccess;
+import org.openstreetmap.gui.jmapviewer.JMapViewer;
 import org.openstreetmap.gui.jmapviewer.OsmMercator;
 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
@@ -12,9 +13,9 @@
 import org.openstreetmap.gui.jmapviewer.tilesources.ScanexTileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.TMSTileSource;
-import org.openstreetmap.gui.jmapviewer.tilesources.TemplatedTMSTileSource;
 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
 import org.openstreetmap.josm.data.imagery.CachedAttributionBingAerialTileSource;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
+import org.openstreetmap.josm.data.imagery.JosmTemplatedTMSTileSource;
 import org.openstreetmap.josm.data.imagery.TMSCachedTileLoader;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
@@ -45,4 +46,7 @@
     public static final BooleanProperty PROP_ADD_TO_SLIPPYMAP_CHOOSER = new BooleanProperty(PREFERENCE_PREFIX + ".add_to_slippymap_chooser",
             true);
+    /** override minimum/maximum zoom level with those supported by JMapViewer, as these might be used in slippymap chooser */
+    public static final int MAX_ZOOM = JMapViewer.MAX_ZOOM;
+    public static final int MIN_ZOOM = JMapViewer.MIN_ZOOM;
 
     private static final ScaleList nativeScaleList = initNativeScaleList();
@@ -112,6 +116,6 @@
     public static TMSTileSource getTileSourceStatic(ImageryInfo info, Runnable attributionLoadedTask) {
         if (info.getImageryType() == ImageryType.TMS) {
-            TemplatedTMSTileSource.checkUrl(info.getUrl());
-            TMSTileSource t = new TemplatedTMSTileSource(info);
+            JosmTemplatedTMSTileSource.checkUrl(info.getUrl());
+            TMSTileSource t = new JosmTemplatedTMSTileSource(info);
             info.setAttribution(t);
             return t;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/TMSSettingsPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/TMSSettingsPanel.java	(revision 15455)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/TMSSettingsPanel.java	(revision 15456)
@@ -16,4 +16,5 @@
 import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -40,7 +41,11 @@
         super(new GridBagLayout());
         minZoomLvl = new JSpinner(new SpinnerNumberModel(
-                TMSLayer.PROP_MIN_ZOOM_LVL.get().intValue(), TMSLayer.MIN_ZOOM, TMSLayer.MAX_ZOOM, 1));
+                Utils.clamp(TMSLayer.PROP_MIN_ZOOM_LVL.get().intValue(), TMSLayer.MIN_ZOOM, TMSLayer.MAX_ZOOM),
+                TMSLayer.MIN_ZOOM,
+                TMSLayer.MAX_ZOOM, 1));
         maxZoomLvl = new JSpinner(new SpinnerNumberModel(
-                TMSLayer.PROP_MAX_ZOOM_LVL.get().intValue(), TMSLayer.MIN_ZOOM, TMSLayer.MAX_ZOOM, 1));
+                Utils.clamp(TMSLayer.PROP_MAX_ZOOM_LVL.get().intValue(), TMSLayer.MIN_ZOOM, TMSLayer.MAX_ZOOM),
+                TMSLayer.MIN_ZOOM,
+                TMSLayer.MAX_ZOOM, 1));
         maxConcurrentDownloads = new JSpinner(new SpinnerNumberModel(
                 TMSCachedTileLoader.THREAD_LIMIT.get().intValue(), 0, Integer.MAX_VALUE, 1));
Index: /trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java	(revision 15455)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java	(revision 15456)
@@ -36,5 +36,4 @@
 import org.openstreetmap.gui.jmapviewer.tilesources.BingAerialTileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.ScanexTileSource;
-import org.openstreetmap.gui.jmapviewer.tilesources.TemplatedTMSTileSource;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.AddImageryLayerAction;
@@ -47,4 +46,5 @@
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
 import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
+import org.openstreetmap.josm.data.imagery.JosmTemplatedTMSTileSource;
 import org.openstreetmap.josm.data.imagery.LayerDetails;
 import org.openstreetmap.josm.data.imagery.Shape;
@@ -366,5 +366,5 @@
                 return new ScanexTileSource(info);
             case TMS:
-                return new TemplatedTMSTileSource(info);
+                return new JosmTemplatedTMSTileSource(info);
             case WMS_ENDPOINT:
                 info = convertWmsEndpointToWms(info); // fall-through
