Tweak based on feedback from PR.
diff --git a/include/rive/drawable.hpp b/include/rive/drawable.hpp
index fc710ab..fc1727f 100644
--- a/include/rive/drawable.hpp
+++ b/include/rive/drawable.hpp
@@ -24,7 +24,7 @@
 
 	public:
 		BlendMode blendMode() const { return (BlendMode)blendModeValue(); }
-		bool clip(Renderer* renderer, bool needsSave = true) const;
+		bool clip(Renderer* renderer) const;
 		virtual void draw(Renderer* renderer) = 0;
 		void addClippingShape(ClippingShape* shape);
 		inline const std::vector<ClippingShape*>& clippingShapes() const
diff --git a/src/drawable.cpp b/src/drawable.cpp
index 855775f..02ed17b 100644
--- a/src/drawable.cpp
+++ b/src/drawable.cpp
@@ -11,17 +11,14 @@
 	m_ClippingShapes.push_back(shape);
 }
 
-bool Drawable::clip(Renderer* renderer, bool needsSave) const
+bool Drawable::clip(Renderer* renderer) const
 {
 	if (m_ClippingShapes.size() == 0)
 	{
 		return false;
 	}
 
-	if (needsSave)
-	{
-		renderer->save();
-	}
+	renderer->save();
 
 	for (auto clippingShape : m_ClippingShapes)
 	{
diff --git a/src/shapes/image.cpp b/src/shapes/image.cpp
index 2877c01..4672e50 100644
--- a/src/shapes/image.cpp
+++ b/src/shapes/image.cpp
@@ -12,10 +12,13 @@
 	{
 		return;
 	}
-	renderer->save();
 
-	// Clip and tell it we're already saved (avoids extra save op).
-	clip(renderer, false);
+	if (!clip(renderer))
+	{
+		// We didn't clip, so make sure to save as we'll be doing some
+		// transformations.
+		renderer->save();
+	}
 
 	auto renderImage = m_ImageAsset->renderImage();
 	auto width = renderImage->width();