diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp
index 1236a297f..d9c533939 100644
--- a/src/libslic3r/PrintObject.cpp
+++ b/src/libslic3r/PrintObject.cpp
@@ -447,11 +447,14 @@ std::unique_ptr<FillAdaptive_Internal::Octree> PrintObject::prepare_adaptive_inf
 
     coordf_t line_spacing = infill_extrusion_width / ((fill_density / 100.0f) * 0.333333333f);
 
-    // Center of the first cube in octree
-    Vec3d model_center = this->model_object()->bounding_box().center();
+    TriangleMesh mesh = this->model_object()->raw_mesh();
+    mesh.transform(m_trafo, true);
+    // Apply XY shift
+    mesh.translate(- unscale<float>(m_center_offset.x()), - unscale<float>(m_center_offset.y()), 0);
 
-    TriangleMesh mesh = this->model_object()->mesh();
-    return FillAdaptive::build_octree(mesh, line_spacing, model_center);
+    // Center of the first cube in octree
+    Vec3d mesh_origin = mesh.bounding_box().center();
+    return FillAdaptive::build_octree(mesh, line_spacing, mesh_origin);
 }
 
 void PrintObject::clear_layers()