also check gradient's opacity
diff --git a/src/artboard.cpp b/src/artboard.cpp
index 1b59a85..395354b 100644
--- a/src/artboard.cpp
+++ b/src/artboard.cpp
@@ -491,7 +491,7 @@
// For now we're conservative/lazy -- if we see that any of our paints are animated
// we assume that might make it non-opaque, so we early out
for (const auto obj : anim->m_KeyedObjects) {
- auto ptr = this->resolve(obj->objectId());
+ const auto ptr = this->resolve(obj->objectId());
for (const auto sp : m_ShapePaints) {
if (ptr == sp) {
return true;
diff --git a/src/shapes/paint/linear_gradient.cpp b/src/shapes/paint/linear_gradient.cpp
index 8f680de..45274da 100644
--- a/src/shapes/paint/linear_gradient.cpp
+++ b/src/shapes/paint/linear_gradient.cpp
@@ -128,6 +128,9 @@
void LinearGradient::opacityChanged() { markGradientDirty(); }
bool LinearGradient::onIsTranslucent() const {
+ if (opacity() < 1) {
+ return true;
+ }
for (const auto stop : m_Stops) {
unsigned alpha = stop->colorValue() >> 24; // helper for this?
if (alpha != 0xFF) {