diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp
index 42ea912f9..73438f679 100644
--- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp
+++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp
@@ -1219,13 +1219,24 @@ void ObjectManipulation::change_size_value(int axis, double value)
 #else
     if (selection.is_single_volume() || selection.is_single_modifier()) {
 #endif // ENABLE_WORLD_COORDINATE
-        const GLVolume* v = selection.get_first_volume();
-        const Vec3d local_size = size.cwiseQuotient(v->get_instance_scaling_factor());
-        const Vec3d local_ref_size = v->bounding_box().size().cwiseProduct(v->get_volume_scaling_factor());
-        const Vec3d local_change = local_size.cwiseQuotient(local_ref_size);
 
-        size = local_change.cwiseProduct(v->get_volume_scaling_factor());
-        ref_size = Vec3d::Ones();
+#if ENABLE_WORLD_COORDINATE
+        if (is_world_coordinates()) {
+            size = size.cwiseQuotient(ref_size);
+            ref_size = Vec3d::Ones();
+        }
+        else {
+#endif // ENABLE_WORLD_COORDINATE
+            const GLVolume* v = selection.get_first_volume();
+            const Vec3d local_size = size.cwiseQuotient(v->get_instance_scaling_factor());
+            const Vec3d local_ref_size = v->bounding_box().size().cwiseProduct(v->get_volume_scaling_factor());
+            const Vec3d local_change = local_size.cwiseQuotient(local_ref_size);
+
+            size = local_change.cwiseProduct(v->get_volume_scaling_factor());
+            ref_size = Vec3d::Ones();
+#if ENABLE_WORLD_COORDINATE
+        }
+#endif // ENABLE_WORLD_COORDINATE
     }
     else if (selection.is_single_full_instance())
 #if ENABLE_WORLD_COORDINATE
@@ -1243,8 +1254,8 @@ void ObjectManipulation::change_size_value(int axis, double value)
 #endif // ENABLE_WORLD_COORDINATE
 
     m_cache.size = size;
-	m_cache.size_rounded(axis) = DBL_MAX;
-	this->UpdateAndShow(true);
+    m_cache.size_rounded(axis) = DBL_MAX;
+    this->UpdateAndShow(true);
 }
 
 void ObjectManipulation::do_scale(int axis, const Vec3d &scale) const
diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp
index 7ca8647f4..291688c4b 100644
--- a/src/slic3r/GUI/Selection.cpp
+++ b/src/slic3r/GUI/Selection.cpp
@@ -1344,8 +1344,7 @@ void Selection::scale_and_translate(const Vec3d& scale, const Vec3d& translation
                 if (!is_single_volume_or_modifier())
                     original_box = get_bounding_box();
                 else if (transformation_type.world())
-                    original_box = v.transformed_convex_hull_bounding_box((volume_data.get_instance_transform() *
-                        volume_data.get_volume_transform()).get_matrix_no_scaling_factor());
+                    original_box = get_bounding_box();
                 else if (transformation_type.instance())
                     original_box = v.transformed_convex_hull_bounding_box(volume_data.get_volume_transform().get_matrix_no_scaling_factor());
                 else