Index: src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 19580)
+++ src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(working copy)
@@ -878,6 +878,12 @@
      * @param e the mouse event causing the action (mouse released)
      */
     private void confirmOrUndoMovement(MouseEvent e) {
+        final Command lastCommand = UndoRedoHandler.getInstance().getLastCommand();
+        if (lastCommand == null) {
+            Logging.warn("No command found in undo/redo history, skipping confirmOrUndoMovement");
+            return;
+        }
+
         if (movesHiddenWay()) {
             final ConfirmMoveDialog ed = new ConfirmMoveDialog();
             ed.setContent(tr("Are you sure that you want to move elements with attached ways that are hidden by filters?"));
@@ -884,12 +890,15 @@
             ed.toggleEnable("movedHiddenElements");
             showConfirmMoveDialog(ed);
         }
+        // check if move was cancelled
+        if (UndoRedoHandler.getInstance().getLastCommand() != lastCommand)
+            return;
 
-        final Command lastCommand = UndoRedoHandler.getInstance().getLastCommand();
-        if (lastCommand == null) {
-            Logging.warn("No command found in undo/redo history, skipping confirmOrUndoMovement");
+        SelectAction.checkForDangerousMove(lastCommand);
+
+        // check if move was cancelled
+        if (UndoRedoHandler.getInstance().getLastCommand() != lastCommand)
             return;
-        }
 
         SelectAction.checkCommandForLargeDistance(lastCommand);
 
@@ -915,6 +924,21 @@
         }
     }
 
+    private static void checkForDangerousMove(Command lastCommand) {
+        if (lastCommand == null) {
+            return;
+        }
+        if (!checkAndConfirmOutlyingOperation("movenode", tr("Move confirmation"),
+                tr("You are about to move nodes that may have referrers that are not yet downloaded.")
+                        + "<br/>"
+                        + tr("This can lead to malformed geometries.") + "<br/>"
+                        + tr("Do you really want to move?"),
+                "",
+                lastCommand.getParticipatingPrimitives(), null)) {
+            UndoRedoHandler.getInstance().undo();
+        }
+    }
+
     static void checkCommandForLargeDistance(Command lastCommand) {
         if (lastCommand == null) {
             return;
