diff --git a/src/g_editor.c b/src/g_editor.c
index d159bf1c499e44e210d604cb45be14e979a49cac..ca4551e06c73adb6bc51ce719b98ca833e304935 100644
--- a/src/g_editor.c
+++ b/src/g_editor.c
@@ -3343,7 +3343,7 @@ static void canvas_displaceselection(t_canvas *x, int dx, int dy)
 	//fprintf(stderr,"canvas_displaceselection %d %d\n", dx, dy);
     t_selection *y;
     int resortin = 0, resortout = 0;
-    if (!canvas_undo_already_set_move)
+    if (!canvas_undo_already_set_move && x->gl_editor->e_selection)
     {
         //canvas_setundo(x, canvas_undo_move, canvas_undo_set_move(x, 1),
         //    "motion");
@@ -4323,6 +4323,7 @@ static void canvas_paste_atmouse(t_canvas *x)
 		}
 	}
 	/* redraw objects */
+	canvas_undo_already_set_move = 1;
     canvas_displaceselection(x, (x->gl_editor->e_xwas)+5-x1, (x->gl_editor->e_ywas)-y1);
 	canvas_startmotion(x);
 }