diff --git a/io_mesh_uv_layout/__init__.py b/io_mesh_uv_layout/__init__.py
index d068a0085862daca053164d352ab75eed0c67b20..e7f19c18f41231ddddb8db49d6a56529313016fc 100644
--- a/io_mesh_uv_layout/__init__.py
+++ b/io_mesh_uv_layout/__init__.py
@@ -141,7 +141,10 @@ class ExportUVLayout(bpy.types.Operator):
         polygon_data = list(self.iter_polygon_data_to_draw(context, meshes))
         different_colors = set(color for _, color in polygon_data)
         if self.modified:
-            self.free_meshes(meshes)
+          depsgraph = context.evaluated_depsgraph_get()
+          for obj in self.iter_objects_to_export(context):
+              obj_eval = obj.evaluated_get(depsgraph)
+              obj_eval.to_mesh_clear()
 
         export = self.get_exporter()
         export(filepath, polygon_data, different_colors, self.size[0], self.size[1], self.opacity)
@@ -169,11 +172,6 @@ class ExportUVLayout(bpy.types.Operator):
                 continue
             yield obj
 
-    @staticmethod
-    def free_meshes(meshes):
-        for mesh in meshes:
-            bpy.data.meshes.remove(mesh)
-
     @staticmethod
     def currently_image_image_editor(context):
         return isinstance(context.space_data, bpy.types.SpaceImageEditor)