diff --git a/src/polymesh/impl/impl_low_level_api_mutable.hh b/src/polymesh/impl/impl_low_level_api_mutable.hh
index 721d3177244ddd70b60bd6ed244077cadf6a7120..369c92833f1c5cd1ca5aea9fe705fbe4b14308a9 100644
--- a/src/polymesh/impl/impl_low_level_api_mutable.hh
+++ b/src/polymesh/impl/impl_low_level_api_mutable.hh
@@ -508,9 +508,10 @@ inline halfedge_index low_level_api_mutable::face_cut(face_index f, halfedge_ind
 
     // rewire faces
     {
-        auto h = h0_next;
+        auto h = h0;
         do
         {
+            h = next_halfedge_of(h);
             if (is_boundary(opposite(h)))
                 halfedge_of(nf) = h;
             face_of(h) = nf;
@@ -522,9 +523,10 @@ inline halfedge_index low_level_api_mutable::face_cut(face_index f, halfedge_ind
 
     // fix face halfedge of f (nf is already fixed)
     {
-        auto h = h1_next;
+        auto h = h1;
         do
         {
+            h = next_halfedge_of(h);
             if (is_boundary(opposite(h)))
             {
                 halfedge_of(f) = h;