diff --git a/pcbnew/tools/edit_tool.cpp b/pcbnew/tools/edit_tool.cpp
index b570756702..f42b59fbea 100644
--- a/pcbnew/tools/edit_tool.cpp
+++ b/pcbnew/tools/edit_tool.cpp
@@ -1943,6 +1943,12 @@ int EDIT_TOOL::Properties( const TOOL_EVENT& aEvent )
         }
     }
 
+    if( m_dragging )
+    {
+        m_toolMgr->PostAction( PCB_ACTIONS::updateLocalRatsnest, VECTOR2I() );
+        m_toolMgr->PostAction( PCB_ACTIONS::refreshPreview );
+    }
+
     return 0;
 }
 
@@ -2065,7 +2071,10 @@ int EDIT_TOOL::Rotate( const TOOL_EVENT& aEvent )
         m_toolMgr->ProcessEvent( EVENTS::SelectedItemsModified );
 
         if( m_dragging )
+        {
             m_toolMgr->PostAction( PCB_ACTIONS::updateLocalRatsnest, VECTOR2I() );
+            m_toolMgr->PostAction( PCB_ACTIONS::refreshPreview );
+        }
     }
 
     // Restore the old reference so any mouse dragging that occurs doesn't make the selection jump
@@ -2229,7 +2238,10 @@ int EDIT_TOOL::Mirror( const TOOL_EVENT& aEvent )
     m_toolMgr->ProcessEvent( EVENTS::SelectedItemsModified );
 
     if( m_dragging )
+    {
         m_toolMgr->PostAction( PCB_ACTIONS::updateLocalRatsnest, VECTOR2I() );
+        m_toolMgr->PostAction( PCB_ACTIONS::refreshPreview );
+    }
 
     return 0;
 }
@@ -2304,7 +2316,10 @@ int EDIT_TOOL::JustifyText( const TOOL_EVENT& aEvent )
     m_toolMgr->ProcessEvent( EVENTS::SelectedItemsModified );
 
     if( m_dragging )
+    {
         m_toolMgr->PostAction( PCB_ACTIONS::updateLocalRatsnest, VECTOR2I() );
+        m_toolMgr->PostAction( PCB_ACTIONS::refreshPreview );
+    }
 
     return 0;
 }
@@ -2385,7 +2400,10 @@ int EDIT_TOOL::Flip( const TOOL_EVENT& aEvent )
     m_toolMgr->ProcessEvent( EVENTS::SelectedItemsModified );
 
     if( m_dragging )
+    {
         m_toolMgr->PostAction( PCB_ACTIONS::updateLocalRatsnest, VECTOR2I() );
+        m_toolMgr->PostAction( PCB_ACTIONS::refreshPreview );
+    }
 
     // Restore the old reference so any mouse dragging that occurs doesn't make the selection jump
     // to this now invalid reference
@@ -2810,7 +2828,10 @@ int EDIT_TOOL::MoveExact( const TOOL_EVENT& aEvent )
         m_toolMgr->ProcessEvent( EVENTS::SelectedItemsModified );
 
         if( m_dragging )
+        {
             m_toolMgr->PostAction( PCB_ACTIONS::updateLocalRatsnest, VECTOR2I() );
+            m_toolMgr->PostAction( PCB_ACTIONS::refreshPreview );
+        }
     }
 
     return 0;
diff --git a/pcbnew/tools/edit_tool_move_fct.cpp b/pcbnew/tools/edit_tool_move_fct.cpp
index aae25a7057..a3bbcd1bac 100644
--- a/pcbnew/tools/edit_tool_move_fct.cpp
+++ b/pcbnew/tools/edit_tool_move_fct.cpp
@@ -465,12 +465,16 @@ bool EDIT_TOOL::doMoveSelection( const TOOL_EVENT& aEvent, BOARD_COMMIT* aCommit
         if( evt->IsMotion() || evt->IsDrag( BUT_LEFT ) )
             eatFirstMouseUp = false;
 
-        if( evt->IsAction( &PCB_ACTIONS::move ) || evt->IsMotion() || evt->IsDrag( BUT_LEFT )
+        if( evt->IsAction( &PCB_ACTIONS::move )
+                || evt->IsMotion()
+                || evt->IsDrag( BUT_LEFT )
                 || evt->IsAction( &ACTIONS::refreshPreview )
                 || evt->IsAction( &PCB_ACTIONS::moveWithReference )
                 || evt->IsAction( &PCB_ACTIONS::moveIndividually ) )
         {
-            if( m_dragging && evt->Category() == TC_MOUSE )
+            if( m_dragging && (    evt->IsMotion()
+                                || evt->IsDrag( BUT_LEFT )
+                                || evt->IsAction( &ACTIONS::refreshPreview ) ) )
             {
                 bool redraw3D = false;