diff --git a/rigify/rigs/limbs/limb_rigs.py b/rigify/rigs/limbs/limb_rigs.py
index c0748055ef1d58ad23a576209c135c3e5ce01adb..1cf1d8462ca23a0ea74c8d0bcec056bec9b507a8 100644
--- a/rigify/rigs/limbs/limb_rigs.py
+++ b/rigify/rigs/limbs/limb_rigs.py
@@ -817,14 +817,12 @@ class BaseLimbRig(BaseRig):
             prev_tweak, next_tweak, fac = self.get_tweak_blend(i, entry)
 
             # Apply the final roll resulting from mixing tweaks to rest pose
-            prev_rot = self.get_bone(prev_tweak).matrix.to_quaternion()
-            next_rot = self.get_bone(next_tweak).matrix.to_quaternion()
-            rot = (prev_rot * (1-fac) + next_rot * fac).normalized()
+            prev_mat = self.get_bone(prev_tweak).matrix
+            next_mat = self.get_bone(next_tweak).matrix
+            rot_mat = prev_mat.lerp(next_mat, fac)
 
             bone = self.get_bone(tweak)
-            bone_rot = bone.matrix.to_quaternion()
-
-            bone.roll += (bone_rot.inverted() @ rot).to_swing_twist('Y')[1]
+            bone.roll += (bone.matrix.inverted() @ rot_mat).to_quaternion().to_swing_twist('Y')[1]
 
     @stage.rig_bones
     def rig_tweak_mch_chain(self):