Fix ScriptedDrawable save/restore (#11451) e7142dcfed

Co-authored-by: Philip Chung <philterdesign@gmail.com>
diff --git a/.rive_head b/.rive_head
index 6198495..b014ec4 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-62fcec60de0eea68dceb64758f284ef5b5e20c00
+e7142dcfedf6710265bd49fe031c26e663b37f99
diff --git a/src/scripted/scripted_drawable.cpp b/src/scripted/scripted_drawable.cpp
index cb325e9..70795ee 100644
--- a/src/scripted/scripted_drawable.cpp
+++ b/src/scripted/scripted_drawable.cpp
@@ -29,16 +29,15 @@
     }
 #endif
 
-    if (m_needsSaveOperation)
+    float opacity = renderOpacity();
+    bool needsOpacitySave = (opacity != 1.0f);
+    if (m_needsSaveOperation || needsOpacitySave)
     {
         renderer->save();
     }
 
-    float opacity = renderOpacity();
-    bool needsOpacitySave = (opacity != 1.0f);
     if (needsOpacitySave)
     {
-        renderer->save();
         renderer->modulateOpacity(opacity);
     }
 
@@ -63,12 +62,7 @@
     // Stack: [scriptedRenderer, self]
     rive_lua_pop(m_state, 2);
 
-    if (needsOpacitySave)
-    {
-        renderer->restore();
-    }
-
-    if (m_needsSaveOperation)
+    if (m_needsSaveOperation || needsOpacitySave)
     {
         renderer->restore();
     }
diff --git a/tests/unit_tests/silvers/script_artboards_opacity.sriv b/tests/unit_tests/silvers/script_artboards_opacity.sriv
index 44af9a7..2ae363d 100644
--- a/tests/unit_tests/silvers/script_artboards_opacity.sriv
+++ b/tests/unit_tests/silvers/script_artboards_opacity.sriv
Binary files differ
diff --git a/tests/unit_tests/silvers/script_path_opacity.sriv b/tests/unit_tests/silvers/script_path_opacity.sriv
index 8bd5bda..11688cf 100644
--- a/tests/unit_tests/silvers/script_path_opacity.sriv
+++ b/tests/unit_tests/silvers/script_path_opacity.sriv
Binary files differ