diff --git a/src/mesh/Dual1DConnectivityBuilder.cpp b/src/mesh/Dual1DConnectivityBuilder.cpp
index 791837518c520fc8ca902ca7da6904e6714bf960..39dea9ddb6ee6c3c6f26660600765e1d9e779b60 100644
--- a/src/mesh/Dual1DConnectivityBuilder.cpp
+++ b/src/mesh/Dual1DConnectivityBuilder.cpp
@@ -56,13 +56,7 @@ Dual1DConnectivityBuilder::_buildConnectivityDescriptor(const Connectivity<1>& p
     dual_descriptor.cell_number_vector[primal_node_id] = primal_node_number[primal_node_id];
   }
 
-  dual_descriptor.cell_type_vector.resize(dual_number_of_cells);
-
-  for (NodeId node_id = 0; node_id < primal_connectivity.numberOfNodes(); ++node_id) {
-    const size_t i_cell = node_id;
-
-    dual_descriptor.cell_type_vector[i_cell] = CellType::Line;
-  }
+  dual_descriptor.cell_type_vector = std::vector<CellType>(dual_number_of_cells, CellType::Line);
 
   dual_descriptor.cell_to_node_vector.resize(dual_number_of_cells);
 
@@ -81,8 +75,10 @@ Dual1DConnectivityBuilder::_buildConnectivityDescriptor(const Connectivity<1>& p
         dual_descriptor.cell_to_node_vector[i_dual_cell][1 - i_node_in_cell] =
           number_of_kept_nodes + primal_node_cell_list[0];
       } else {
-        dual_descriptor.cell_to_node_vector[i_dual_cell][0] = number_of_kept_nodes + primal_node_cell_list[0];
-        dual_descriptor.cell_to_node_vector[i_dual_cell][1] = number_of_kept_nodes + primal_node_cell_list[1];
+        const auto i0 = primal_node_local_number_in_their_cells(i_node, 0);
+
+        dual_descriptor.cell_to_node_vector[i_dual_cell][0] = number_of_kept_nodes + primal_node_cell_list[1 - i0];
+        dual_descriptor.cell_to_node_vector[i_dual_cell][1] = number_of_kept_nodes + primal_node_cell_list[i0];
       }
     }
   }
diff --git a/tests/test_Dual1DConnectivityBuilder.cpp b/tests/test_Dual1DConnectivityBuilder.cpp
index c3b4796c0d479682f591b815b936e7d1024006ca..2b194a92baa821d6da4bac1e6277aaea6c1ddb1b 100644
--- a/tests/test_Dual1DConnectivityBuilder.cpp
+++ b/tests/test_Dual1DConnectivityBuilder.cpp
@@ -19,8 +19,9 @@ get_item_ref_ids(const ConnectivityType& connectivity)
     os << ref_id_list.refId();
     ItemValue<size_t, item_type> item_tag{connectivity};
     item_tag.fill(0);
+    auto& list = ref_id_list.list();
     for (size_t i_item = 0; i_item < ref_id_list.list().size(); ++i_item) {
-      item_tag[ref_id_list.list()[i_item]] = 1;
+      item_tag[list[i_item]] = 1;
     }
 
     ref_id_set[os.str()] = sum(item_tag);