diff --git a/meshmode/mesh/processing.py b/meshmode/mesh/processing.py
index 1c23fbc0a4d84df9b5bb5f972d558bf97b54955d..9e03f25316e04f00d8c8a8c685c63a43b106774c 100644
--- a/meshmode/mesh/processing.py
+++ b/meshmode/mesh/processing.py
@@ -1646,8 +1646,7 @@ def remove_unused_vertices(mesh: Mesh) -> Mesh:
     new_vertex_indices = np.cumsum(used_flags, dtype=mesh.vertex_id_dtype) - 1
     new_vertex_indices[~used_flags] = -1
 
-    return replace(
-        mesh,
+    return mesh.copy(
         vertices=mesh.vertices[:, used_flags],
         groups=tuple(
             replace(grp, vertex_indices=new_vertex_indices[grp.vertex_indices])
diff --git a/test/test_mesh.py b/test/test_mesh.py
index 6b0d4c87fb8cf4475452f886d350e9c09eccb742..c471e0951251896fbe957dcbf515afbb1cb7fdf9 100644
--- a/test/test_mesh.py
+++ b/test/test_mesh.py
@@ -267,8 +267,7 @@ def test_remove_unused_vertices():
 
     assert mesh.vertices is not None
 
-    mesh2 = replace(
-        mesh,
+    mesh2 = mesh.copy(
         vertices=np.concatenate([np.zeros((3, 1)), mesh.vertices], axis=1),
         groups=tuple(
             replace(
diff --git a/test/test_meshmode.py b/test/test_meshmode.py
index 526e7a2ee267b2a678fdf85fe77acab66d019854..f264b6462966dfea0cbe56ca889ed8e0465224a0 100644
--- a/test/test_meshmode.py
+++ b/test/test_meshmode.py
@@ -889,7 +889,7 @@ def test_mesh_without_vertices(actx_factory):
     groups = [
         replace(grp, nodes=grp.nodes, vertex_indices=None)
         for grp in mesh.groups]
-    mesh = make_mesh(None, groups, is_conforming=False)
+    mesh = make_mesh(None, groups, is_conforming=None)
 
     # try refining it
     from meshmode.mesh.refinement import refine_uniformly