Index: /applications/editors/josm/plugins/wmsplugin/src/wmsplugin/Grabber.java
===================================================================
--- /applications/editors/josm/plugins/wmsplugin/src/wmsplugin/Grabber.java	(revision 19239)
+++ /applications/editors/josm/plugins/wmsplugin/src/wmsplugin/Grabber.java	(revision 19240)
@@ -113,3 +113,5 @@
         return (int)(Math.random() * ((max+1)-min) ) + min;
     }
+
+    abstract public boolean loadFromCache();
 }
Index: /applications/editors/josm/plugins/wmsplugin/src/wmsplugin/HTMLGrabber.java
===================================================================
--- /applications/editors/josm/plugins/wmsplugin/src/wmsplugin/HTMLGrabber.java	(revision 19239)
+++ /applications/editors/josm/plugins/wmsplugin/src/wmsplugin/HTMLGrabber.java	(revision 19240)
@@ -27,7 +27,4 @@
         System.out.println("Grabbing HTML " + url);
 
-        BufferedImage cached = cache.getImg(urlstring);
-        if(cached != null) return cached;
-
         ArrayList<String> cmdParams = new ArrayList<String>();
         StringTokenizer st = new StringTokenizer(MessageFormat.format(
Index: /applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSGrabber.java
===================================================================
--- /applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSGrabber.java	(revision 19239)
+++ /applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSGrabber.java	(revision 19240)
@@ -66,7 +66,5 @@
 
             if(image.isVisible(mv, layer.getDx(), layer.getDy())) { //don't download, if the image isn't visible already
-                BufferedImage img = grab(url); 
-                if(img == null)return;
-                image.image = img;
+                image.image = grab(url);
                 image.flushedResizedCachedInstance();
             }
@@ -154,11 +152,31 @@
     }
 
-    protected BufferedImage grab(URL url) throws IOException, OsmTransferException {
+    public boolean loadFromCache(){
+        URL url = null;
+        try{
+           url = getURL(
+              b.min.east(), b.min.north(),
+              b.max.east(), b.max.north(),
+              width(), height());
+        } catch(Exception e) {
+           return false;
+        }
         BufferedImage cached = cache.getImg(url.toString());
         if(!layer.hasAutoDownload() || cached != null){
-           if(cached == null) grabNotInCache();
-           return cached;
-        }
-
+           image.min = b.min;
+           image.max = b.max;
+           if(cached == null){
+              grabNotInCache();
+              return true;
+           }
+           image.image = cached;
+           image.flushedResizedCachedInstance();
+           image.downloadingStarted = false;
+           return true;
+        }
+        return false;
+    }
+
+    protected BufferedImage grab(URL url) throws IOException, OsmTransferException {
         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 19239)
+++ /applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSLayer.java	(revision 19240)
@@ -252,6 +252,8 @@
                     img.flushedResizedCachedInstance();
                     Grabber gr = WMSPlugin.getGrabber(XYtoBounds(x,y), img, mv, this);
-                    gr.setPriority(1);
-                    executor.submit(gr);
+                    if(!gr.loadFromCache()){
+                       gr.setPriority(1);
+                       executor.submit(gr);
+                    }
                 }
             }
