Index: applications/editors/josm/plugins/wmsplugin/src/wmsplugin/GeorefImage.java
===================================================================
--- applications/editors/josm/plugins/wmsplugin/src/wmsplugin/GeorefImage.java	(revision 17557)
+++ applications/editors/josm/plugins/wmsplugin/src/wmsplugin/GeorefImage.java	(revision 17561)
@@ -35,7 +35,8 @@
     }
 
-    /* this does not take dx and dy offset into account! */
-    public boolean isVisible(NavigatableComponent nc) {
-        Point minPt = nc.getPoint(min), maxPt = nc.getPoint(max);
+    public boolean isVisible(NavigatableComponent nc, double dx, double dy) {
+        EastNorth mi = new EastNorth(min.east()+dx, min.north()+dy);
+        EastNorth ma = new EastNorth(max.east()+dx, max.north()+dy);
+        Point minPt = nc.getPoint(mi), maxPt = nc.getPoint(ma);
         Graphics g = nc.getGraphics();
 
@@ -51,6 +52,5 @@
         Point minPt = nc.getPoint(mi), maxPt = nc.getPoint(ma);
 
-        /* this is isVisible() but taking dx, dy into account */
-        if(!(g.hitClip(minPt.x, maxPt.y, maxPt.x - minPt.x, minPt.y - maxPt.y))) {
+        if(!isVisible(nc, dx, dy)){
             return false;
         }
Index: applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSGrabber.java
===================================================================
--- applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSGrabber.java	(revision 17557)
+++ applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSGrabber.java	(revision 17561)
@@ -65,5 +65,5 @@
             image.max = b.max;
 
-            if(image.isVisible(mv)) { //don't download, if the image isn't visible already
+            if(image.isVisible(mv, layer.getDx(), layer.getDy())) { //don't download, if the image isn't visible already
                 image.image = grab(url);
                 image.flushedResizedCachedInstance();
Index: applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSLayer.java
===================================================================
--- applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSLayer.java	(revision 17557)
+++ applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSLayer.java	(revision 17561)
@@ -101,4 +101,12 @@
 			}
 		}
+	}
+
+	public double getDx(){
+		return dx;
+	}
+
+	public double getDy(){
+		return dy;
 	}
 
@@ -207,8 +215,8 @@
 			return;
 		ProjectionBounds bounds = mv.getProjectionBounds();
-		int bminx= (int)Math.floor ((bounds.min.east() * pixelPerDegree ) / ImageSize );
-		int bminy= (int)Math.floor ((bounds.min.north() * pixelPerDegree ) / ImageSize );
-		int bmaxx= (int)Math.ceil  ((bounds.max.east() * pixelPerDegree ) / ImageSize );
-		int bmaxy= (int)Math.ceil  ((bounds.max.north() * pixelPerDegree ) / ImageSize );
+		int bminx= (int)Math.floor (((bounds.min.east() - dx) * pixelPerDegree) / ImageSize );
+		int bminy= (int)Math.floor (((bounds.min.north() - dy) * pixelPerDegree) / ImageSize );
+		int bmaxx= (int)Math.ceil  (((bounds.max.east() - dx) * pixelPerDegree) / ImageSize );
+		int bmaxy= (int)Math.ceil  (((bounds.max.north() - dy) * pixelPerDegree) / ImageSize );
 
 		if((bmaxx - bminx > dax) || (bmaxy - bminy > day)){
