diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/LPaint.java b/lottie/src/main/java/com/airbnb/lottie/animation/LPaint.java
index ea8f1e8..ab82411 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/LPaint.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/LPaint.java
@@ -1,8 +1,11 @@
 package com.airbnb.lottie.animation;
 
+import static com.airbnb.lottie.utils.MiscUtils.clamp;
+
 import android.graphics.Paint;
 import android.graphics.PorterDuff;
 import android.graphics.PorterDuffXfermode;
+import android.os.Build;
 import android.os.LocaleList;
 
 import androidx.annotation.NonNull;
@@ -35,4 +38,21 @@
   public void setTextLocales(@NonNull LocaleList locales) {
     // Do nothing.
   }
+
+  /**
+   * Overrides {@link android.graphics.Paint#setAlpha(int)} to avoid
+   * unnecessary {@link android.graphics.ColorSpace.Named ColorSpace$Named[] }
+   * allocations when calling this method in Android 29 or lower.
+   *
+   * @param alpha set the alpha component [0..255] of the paint's color.
+   */
+  @Override
+  public void setAlpha(int alpha) {
+    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
+      int color = getColor();
+      setColor((clamp(alpha, 0, 255) << 24) | (color & 0xFFFFFF));
+    } else {
+      super.setAlpha(clamp(alpha, 0, 255));
+    }
+  }
 }
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
index 35f472f..46732a8 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
@@ -98,9 +98,9 @@
       return;
     }
     L.beginSection("FillContent#draw");
-    paint.setColor(((ColorKeyframeAnimation) colorAnimation).getIntValue());
+    int color = ((ColorKeyframeAnimation) this.colorAnimation).getIntValue();
     int alpha = (int) ((parentAlpha / 255f * opacityAnimation.getValue() / 100f) * 255);
-    paint.setAlpha(clamp(alpha, 0, 255));
+    paint.setColor((clamp(alpha, 0, 255) << 24) | (color & 0xFFFFFF));
 
     if (colorFilterAnimation != null) {
       paint.setColorFilter(colorFilterAnimation.getValue());
