Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/WMSSettingsPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/WMSSettingsPanel.java	(revision 11286)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/WMSSettingsPanel.java	(revision 11287)
@@ -16,4 +16,5 @@
 import org.openstreetmap.josm.gui.layer.WMSLayer;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -22,4 +23,9 @@
  */
 public class WMSSettingsPanel extends JPanel {
+
+    private static final int IMAGE_SIZE_MIN = 1;
+    private static final int IMAGE_SIZE_MAX = 4096;
+    private static final int THREADS_MIN = 1;
+    private static final int THREADS_MAX = 30;
 
     // WMS Settings
@@ -43,5 +49,6 @@
         add(Box.createHorizontalGlue(), GBC.eol().fill(GBC.HORIZONTAL));
         JLabel labelSimConn = new JLabel(tr("Simultaneous connections:"));
-        spinSimConn = new JSpinner(new SpinnerNumberModel(WMSCachedTileLoaderJob.THREAD_LIMIT.get().intValue(), 1, 30, 1));
+        int threadLimitValue = Utils.clamp(WMSCachedTileLoaderJob.THREAD_LIMIT.get(), THREADS_MIN, THREADS_MAX);
+        spinSimConn = new JSpinner(new SpinnerNumberModel(threadLimitValue, THREADS_MIN, THREADS_MAX, 1));
         labelSimConn.setLabelFor(spinSimConn);
         add(labelSimConn, GBC.std());
@@ -51,5 +58,6 @@
         // Tile size
         JLabel labelTileSize = new JLabel(tr("Tile size:"));
-        tileSize = new JSpinner(new SpinnerNumberModel(WMSLayer.PROP_IMAGE_SIZE.get().intValue(), 1, 4096, 128));
+        int tileSizeValue = Utils.clamp(WMSLayer.PROP_IMAGE_SIZE.get(), IMAGE_SIZE_MIN, IMAGE_SIZE_MAX);
+        tileSize = new JSpinner(new SpinnerNumberModel(tileSizeValue, IMAGE_SIZE_MIN, IMAGE_SIZE_MAX, 128));
         labelTileSize.setLabelFor(tileSize);
         add(labelTileSize, GBC.std());
