Index: /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 13794)
+++ /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 13795)
@@ -127,5 +127,9 @@
     private void doExitMode() {
         exitingMode = true;
-        super.exitMode();
+        try {
+            super.exitMode();
+        } catch (IllegalArgumentException e) {
+            Logging.trace(e);
+        }
         if (offsetDialog != null) {
             if (layer != null) {
Index: /trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 13794)
+++ /trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 13795)
@@ -471,18 +471,21 @@
      */
     public boolean selectMapMode(MapMode newMapMode, Layer newLayer) {
-        if (newMapMode == null || !newMapMode.layerIsSupported(newLayer))
-            return false;
-
         MapMode oldMapMode = this.mapMode;
         if (newMapMode == oldMapMode)
             return true;
+        if (newMapMode == null || !newMapMode.layerIsSupported(newLayer)) {
+            newMapMode = null;
+        }
+
         if (oldMapMode != null) {
             oldMapMode.exitMode();
         }
         this.mapMode = newMapMode;
-        newMapMode.enterMode();
+        if (newMapMode != null) {
+            newMapMode.enterMode();
+        }
         lastMapMode.put(newLayer, newMapMode);
         fireMapModeChanged(oldMapMode, newMapMode);
-        return true;
+        return newMapMode != null;
     }
 
