diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp
index 6c350e7b4..f0ad7e1e0 100644
--- a/src/libslic3r/Model.cpp
+++ b/src/libslic3r/Model.cpp
@@ -2406,11 +2406,12 @@ arrangement::ArrangePolygon ModelInstance::get_arrange_polygon() const
 {
 //    static const double SIMPLIFY_TOLERANCE_MM = 0.1;
     
-    Vec3d rotation = get_rotation();
-    rotation.z()   = 0.;
-    Transform3d trafo_instance = Geometry::assemble_transform(get_offset().z() * Vec3d::UnitZ(), rotation, get_scaling_factor(), get_mirror());
+//    Vec3d rotation = get_rotation();
+//    rotation.z()   = 0.;
+//    Transform3d trafo_instance = Geometry::assemble_transform(get_offset().z() * Vec3d::UnitZ(), rotation, get_scaling_factor(), get_mirror());
 
-    Polygon p = get_object()->convex_hull_2d(trafo_instance);
+
+    Polygon p = get_object()->convex_hull_2d(this->get_matrix());
 
 //    if (!p.points.empty()) {
 //        Polygons pp{p};
@@ -2420,8 +2421,8 @@ arrangement::ArrangePolygon ModelInstance::get_arrange_polygon() const
    
     arrangement::ArrangePolygon ret;
     ret.poly.contour = std::move(p);
-    ret.translation  = Vec2crd{scaled(get_offset(X)), scaled(get_offset(Y))};
-    ret.rotation     = get_rotation(Z);
+    ret.translation  = Vec2crd::Zero(); //Vec2crd{scaled(get_offset(X)), scaled(get_offset(Y))};
+    ret.rotation     = 0.;
 
     return ret;
 }
diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp
index 55aceeeb2..d29ce3525 100644
--- a/src/libslic3r/Model.hpp
+++ b/src/libslic3r/Model.hpp
@@ -1170,9 +1170,16 @@ public:
     void apply_arrange_result(const Vec2d& offs, double rotation)
     {
         // write the transformation data into the model instance
-        set_rotation(Z, rotation);
-        set_offset(X, unscale<double>(offs(X)));
-        set_offset(Y, unscale<double>(offs(Y)));
+//        set_rotation(Z, rotation);
+//        set_offset(X, unscale<double>(offs(X)));
+//        set_offset(Y, unscale<double>(offs(Y)));
+        auto trafo = get_transformation().get_matrix();
+        trafo.translate(to_3d(unscaled(offs), 0.));
+        trafo.rotate(Eigen::AngleAxisd(rotation, Vec3d::UnitZ()));
+        m_transformation.set_matrix(trafo);
+
+//        set_rotation(Z, get_rotation().z() + rotation);
+//        set_offset(get_offset() + to_3d(unscaled(offs), 0.));
         this->object->invalidate_bounding_box();
     }