diff --git a/rigify/generate.py b/rigify/generate.py
index 613ef59fd6fdcc79878f4cd8cb8492eca42e48ea..62f846826183d3d48e41565099fba393c9b612f6 100644
--- a/rigify/generate.py
+++ b/rigify/generate.py
@@ -172,6 +172,14 @@ class Generator(base_generate.BaseGenerator):
 
         bpy.ops.object.duplicate()
 
+        # Rename org bones in the temporary object
+        temp_obj = context.view_layer.objects.active
+
+        assert temp_obj and temp_obj != metarig
+
+        self.__freeze_driver_vars(temp_obj)
+        self.__rename_org_bones(temp_obj)
+
         # Select the target rig and join
         select_object(context, obj)
 
@@ -192,6 +200,9 @@ class Generator(base_generate.BaseGenerator):
             for track in obj.animation_data.nla_tracks:
                 obj.animation_data.nla_tracks.remove(track)
 
+
+    def __freeze_driver_vars(self, obj):
+        if obj.animation_data:
             # Freeze drivers referring to custom properties
             for d in obj.animation_data.drivers:
                 for var in d.driver.variables:
@@ -202,9 +213,7 @@ class Generator(base_generate.BaseGenerator):
                             tar.data_path = "RIGIFY-" + tar.data_path
 
 
-    def __rename_org_bones(self):
-        obj = self.obj
-
+    def __rename_org_bones(self, obj):
         #----------------------------------
         # Make a list of the original bones so we can keep track of them.
         original_bones = [bone.name for bone in obj.data.bones]
@@ -382,21 +391,13 @@ class Generator(base_generate.BaseGenerator):
             childs[child] = child.parent_bone
 
         #------------------------------------------
-        # Copy bones from metarig to obj
+        # Copy bones from metarig to obj (adds ORG_PREFIX)
         self.__duplicate_rig()
 
         obj.data.use_mirror_x = False
 
         t.tick("Duplicate rig: ")
 
-        #------------------------------------------
-        # Add the ORG_PREFIX to the original bones.
-        bpy.ops.object.mode_set(mode='OBJECT')
-
-        self.__rename_org_bones()
-
-        t.tick("Make list of org bones: ")
-
         #------------------------------------------
         # Put the rig_name in the armature custom properties
         rna_idprop_ui_prop_get(obj.data, "rig_id", create=True)