diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp
index bb13a9a0a..3800d49e3 100644
--- a/src/libslic3r/Arrange.cpp
+++ b/src/libslic3r/Arrange.cpp
@@ -572,10 +572,13 @@ static void process_arrangeable(const ArrangePolygon &arrpoly,
 
     clppr::Polygon clpath(Slic3rMultiPoint_to_ClipperPath(p));
 
-    if (!clpath.Contour.empty()) {
-        auto firstp = clpath.Contour.front();
-        clpath.Contour.emplace_back(firstp);
-    }
+    // This fixes:
+    // https://github.com/prusa3d/PrusaSlicer/issues/2209
+    if (clpath.Contour.size() < 3)
+        return;
+
+    auto firstp = clpath.Contour.front();
+    clpath.Contour.emplace_back(firstp);
 
     outp.emplace_back(std::move(clpath));
     outp.back().rotation(rotation);
diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp
index b06b1f347..c0258e719 100644
--- a/src/libslic3r/Model.cpp
+++ b/src/libslic3r/Model.cpp
@@ -1858,8 +1858,6 @@ arrangement::ArrangePolygon ModelInstance::get_arrange_polygon() const
 
     assert(!p.points.empty());
 
-    // this may happen for malformed models, see:
-    // https://github.com/prusa3d/PrusaSlicer/issues/2209
 //    if (!p.points.empty()) {
 //        Polygons pp{p};
 //        pp = p.simplify(scaled<double>(SIMPLIFY_TOLERANCE_MM));