diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c
index 0a3ba8dabd58134b96f906983283d8635ff85d5d..8b8f7128ddc4c7a0348b7d52589e136121fa4dd2 100644
--- a/pd/src/g_editor.c
+++ b/pd/src/g_editor.c
@@ -1009,6 +1009,7 @@ void canvas_undo_move(t_canvas *x, void *z, int action)
     if (action == UNDO_UNDO || action == UNDO_REDO)
     {
         int i;
+		do_not_redraw = 1;
         for (i = 0; i < buf->u_n; i++)
         {
             int x1, y1, x2, y2, newx, newy;
@@ -1028,6 +1029,8 @@ void canvas_undo_move(t_canvas *x, void *z, int action)
 				glist_select(x, y);
             }
         }
+		do_not_redraw = 0;
+		canvas_redraw(x);
 		if (resortin) canvas_resortinlets(x);
 		if (resortout) canvas_resortoutlets(x);
     }