Index: applications/editors/josm/plugins/wmsplugin/src/wmsplugin/Grabber.java
===================================================================
--- applications/editors/josm/plugins/wmsplugin/src/wmsplugin/Grabber.java	(revision 18949)
+++ applications/editors/josm/plugins/wmsplugin/src/wmsplugin/Grabber.java	(revision 19239)
@@ -73,4 +73,22 @@
         image.flushedResizedCachedInstance();
         image.failed = true;
+        image.downloadingStarted = false;
+        g.setFont(font);
+    }
+
+    protected void grabNotInCache(){ // report not in cache
+        BufferedImage img = new BufferedImage(width(), height(), BufferedImage.TYPE_INT_ARGB);
+        Graphics g = img.getGraphics();
+        g.setColor(Color.GRAY);
+        g.fillRect(0, 0, width(), height());
+        Font font = g.getFont();
+        Font tempFont = font.deriveFont(Font.PLAIN).deriveFont(36.0f);
+        g.setFont(tempFont);
+        g.setColor(Color.BLACK);
+        g.drawString(tr("Not in cache"), 10, height()/2);
+        image.image = img;
+        image.flushedResizedCachedInstance();
+        image.failed = true;
+        image.downloadingStarted = false;
         g.setFont(font);
     }
Index: applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSGrabber.java
===================================================================
--- applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSGrabber.java	(revision 18949)
+++ applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSGrabber.java	(revision 19239)
@@ -66,5 +66,7 @@
 
             if(image.isVisible(mv, layer.getDx(), layer.getDy())) { //don't download, if the image isn't visible already
-                image.image = grab(url);
+                BufferedImage img = grab(url); 
+                if(img == null)return;
+                image.image = img;
                 image.flushedResizedCachedInstance();
             }
@@ -154,5 +156,8 @@
     protected BufferedImage grab(URL url) throws IOException, OsmTransferException {
         BufferedImage cached = cache.getImg(url.toString());
-        if(cached != null) return cached;
+        if(!layer.hasAutoDownload() || cached != null){
+           if(cached == null) grabNotInCache();
+           return cached;
+        }
 
         System.out.println("Grabbing WMS " + url);
Index: applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSLayer.java
===================================================================
--- applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSLayer.java	(revision 18949)
+++ applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSLayer.java	(revision 19239)
@@ -96,5 +96,4 @@
         }
         resolution = mv.getDist100PixelText();
-        pixelPerDegree = getPPD();
 
         executor = Executors.newFixedThreadPool(3);
@@ -113,4 +112,8 @@
     }
 
+    public boolean hasAutoDownload(){
+        return startstop.isSelected();
+    }
+
     public double getDx(){
         return dx;
@@ -177,5 +180,5 @@
         if (usesInvalidUrl && !isInvalidUrlConfirmed) return;
 
-        if( !startstop.isSelected() || (pixelPerDegree / getPPD() > minZoom) ){ //don't download when it's too outzoomed
+        if(pixelPerDegree / getPPD() > minZoom){ //don't download when it's too outzoomed
             for(int x = 0; x<dax; ++x) {
                 for(int y = 0; y<day; ++y) {
@@ -461,5 +464,5 @@
             }
             Main.pref.put("wmsplugin.url."+ i +".url",baseURL );
-            Main.pref.put("wmsplugin.url."+String.valueOf(i)+".name", baseName + "#" + getPPD() );
+            Main.pref.put("wmsplugin.url."+String.valueOf(i)+".name", baseName + "#PPD=" + getPPD() );
             WMSPlugin.refreshMenu();
         }
