Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java	(revision 18604)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java	(revision 18605)
@@ -636,5 +636,5 @@
     public Future<?> setImage(IImageEntry<?> entry) {
         LoadImageRunnable runnable = setImage0(entry);
-        return runnable != null ? MainApplication.worker.submit(runnable) : null;
+        return runnable != null && !MainApplication.worker.isShutdown() ? MainApplication.worker.submit(runnable) : null;
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 18604)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 18605)
@@ -908,5 +908,5 @@
             ImageData removedData = ((GeoImageLayer) e.getRemovedLayer()).getImageData();
             if (removedData == ((ImageEntry) this.currentEntry).getDataSet()) {
-                displayImages(null);
+                displayImages(e.getRemovedLayer(), null);
             }
             removedData.removeImageDataUpdateListener(this);
