Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 15733)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 15734)
@@ -655,7 +655,9 @@
                 final TileSourceDisplaySettings displaySettings = ((AbstractTileSourceLayer<?>) layer).getDisplaySettings();
                 if (EastNorth.ZERO.equals(displaySettings.getDisplacement())) {
+                    final boolean hasPreviousOffset = displaySettings.getPreviousOffsetBookmark() != null;
                     cb.setSelected(false);
-                    cb.setEnabled(false); // TODO: allow reselecting checkbox and thereby setting the old offset again
-                    cb.setToolTipText(tr("layer is without a user-defined offset"));
+                    cb.setEnabled(hasPreviousOffset);
+                    cb.setToolTipText(tr("layer is without a user-defined offset") +
+                            (hasPreviousOffset ? " " + tr("(click to activate previous offset)") : ""));
                 } else {
                     cb.setSelected(true);
@@ -1126,9 +1128,11 @@
                     // reset layer offset
                     if (l instanceof AbstractTileSourceLayer<?>) {
-                        AbstractTileSourceLayer<?> abstractTileSourceLayer = (AbstractTileSourceLayer<?>) l;
-                        OffsetBookmark offsetBookmark = abstractTileSourceLayer.getDisplaySettings().getOffsetBookmark();
+                        final TileSourceDisplaySettings displaySettings = ((AbstractTileSourceLayer<?>) l).getDisplaySettings();
+                        final OffsetBookmark offsetBookmark = displaySettings.getOffsetBookmark();
                         if (offsetBookmark != null) {
-                            abstractTileSourceLayer.getDisplaySettings().setOffsetBookmark(null);
+                            displaySettings.setOffsetBookmark(null);
                             MainApplication.getMenu().imageryMenu.refreshOffsetMenu();
+                        } else {
+                            displaySettings.setOffsetBookmark(displaySettings.getPreviousOffsetBookmark());
                         }
                     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java	(revision 15733)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java	(revision 15734)
@@ -67,4 +67,5 @@
     private boolean showErrors;
 
+    private OffsetBookmark previousOffsetBookmark;
     private OffsetBookmark offsetBookmark;
     /**
@@ -216,4 +217,7 @@
      */
     public void setOffsetBookmark(OffsetBookmark offsetBookmark) {
+        if (this.offsetBookmark != null) {
+            this.previousOffsetBookmark = this.offsetBookmark;
+        }
         this.offsetBookmark = offsetBookmark;
         if (offsetBookmark == null) {
@@ -230,4 +234,12 @@
     public OffsetBookmark getOffsetBookmark() {
         return this.offsetBookmark;
+    }
+
+    /**
+     * Gets the offset bookmark previously in use.
+     * @return the previously used offset bookmark, may be null
+     */
+    public OffsetBookmark getPreviousOffsetBookmark() {
+        return previousOffsetBookmark;
     }
 
