diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp
index 50cc028a9..6ffd0b621 100644
--- a/src/slic3r/GUI/GLCanvas3D.cpp
+++ b/src/slic3r/GUI/GLCanvas3D.cpp
@@ -1609,7 +1609,7 @@ void GLCanvas3D::Selection::rotate(const Vec3d& rotation, bool local)
         else if (is_single_volume() || is_single_modifier())
 #if ENABLE_WORLD_ROTATIONS
         {
-            if (requires_local_axes())
+            if (local)
                 (*m_volumes)[i]->set_volume_rotation(rotation);
             else
             {
diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp
index 7c6ac111a..3e6fe228c 100644
--- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp
+++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp
@@ -497,7 +497,11 @@ void ObjectManipulation::change_rotation_value(const Vec3d& rotation)
     }
 
     canvas->get_selection().start_dragging();
+#if ENABLE_IMPROVED_SIDEBAR_OBJECTS_MANIPULATION
+    canvas->get_selection().rotate(rad_rotation, selection.is_single_full_instance() || selection.requires_local_axes());
+#else
     canvas->get_selection().rotate(rad_rotation, selection.is_single_full_instance());
+#endif // ENABLE_IMPROVED_SIDEBAR_OBJECTS_MANIPULATION
     canvas->do_rotate();
 
 #if ENABLE_IMPROVED_SIDEBAR_OBJECTS_MANIPULATION