Index: /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 3733)
+++ /trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 3734)
@@ -195,6 +195,25 @@
         }
 
+        private boolean confirmOverwriteBookmark() {
+            ExtendedDialog dialog = new ExtendedDialog(
+                    Main.parent,
+                    tr("Overwrite"),
+                    new String[] {tr("Overwrite"), tr("Cancel")}
+            ) {{
+                contentInsets = new Insets(10, 15, 10, 15);
+            }};
+            dialog.setContent(tr("Offset bookmark already exists. Overwrite?"));
+            dialog.setButtonIcons(new String[] {"ok.png", "cancel.png"});
+            dialog.setupDialog();
+            dialog.setVisible(true);
+            return dialog.getValue() == 1;
+        }
+
         @Override
         protected void buttonAction(int buttonIndex, ActionEvent evt) {
+            if (buttonIndex != 1 && tBookmarkName.getText() != null && !"".equals(tBookmarkName.getText()) &&
+                    OffsetBookmark.getBookmarkByName(layer, tBookmarkName.getText()) != null) {
+                if (!confirmOverwriteBookmark()) return;
+            }
             super.buttonAction(buttonIndex, evt);
             offsetDialog = null;
@@ -202,10 +221,5 @@
                 layer.setOffset(oldDx, oldDy);
             } else if (tBookmarkName.getText() != null && !"".equals(tBookmarkName.getText())) {
-                OffsetBookmark b = new OffsetBookmark(
-                        Main.proj,layer.getInfo().getName(),
-                        tBookmarkName.getText(),
-                        layer.getDx(),layer.getDy());
-                OffsetBookmark.allBookmarks.add(b);
-                OffsetBookmark.saveBookmarks();
+                OffsetBookmark.bookmarkOffset(tBookmarkName.getText(), layer);
             }
             Main.main.menu.imageryMenuUpdater.refreshOffsetMenu();
Index: /trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java	(revision 3733)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java	(revision 3734)
@@ -9,4 +9,5 @@
 import java.util.LinkedList;
 import java.util.List;
+import java.util.ListIterator;
 
 import org.openstreetmap.josm.Main;
@@ -76,3 +77,26 @@
     }
 
+    public static OffsetBookmark getBookmarkByName(ImageryLayer layer, String name) {
+        for (OffsetBookmark b : allBookmarks) {
+            if (b.isUsable(layer) && name.equals(b.name))
+                return b;
+        }
+        return null;
+    }
+
+    public static void bookmarkOffset(String name, ImageryLayer layer) {
+        OffsetBookmark nb = new OffsetBookmark(
+                Main.proj, layer.getInfo().getName(),
+                name, layer.getDx(), layer.getDy());
+        for (ListIterator<OffsetBookmark> it = allBookmarks.listIterator();it.hasNext();) {
+            OffsetBookmark b = it.next();
+            if (b.isUsable(layer) && name.equals(b.name)) {
+                it.set(nb);
+                saveBookmarks();
+                return;
+            }
+        }
+        allBookmarks.add(nb);
+        saveBookmarks();
+    }
 }
