diff --git a/core/fpdfapi/render/cpdf_imagerenderer.cpp b/core/fpdfapi/render/cpdf_imagerenderer.cpp
index 9a94a59..60d0fc1 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.cpp
+++ b/core/fpdfapi/render/cpdf_imagerenderer.cpp
@@ -364,6 +364,8 @@
   }
   CalculateDrawImage(&bitmap_device1, &bitmap_device2, m_pLoader->GetMask(),
                      new_matrix, rect);
+  DCHECK(!bitmap_device2.GetBitmap()->HasPalette());
+  bitmap_device2.GetBitmap()->ConvertFormat(FXDIB_Format::k8bppMask);
 #if defined(_SKIA_SUPPORT_)
   if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
     m_pRenderStatus->GetRenderDevice()->SetBitsWithMask(
@@ -372,7 +374,6 @@
     return false;
   }
 #endif
-  bitmap_device2.GetBitmap()->ConvertFormat(FXDIB_Format::k8bppMask);
   bitmap_device1.GetBitmap()->MultiplyAlpha(bitmap_device2.GetBitmap());
   if (m_BitmapAlpha < 255)
     bitmap_device1.GetBitmap()->MultiplyAlpha(m_BitmapAlpha);
diff --git a/core/fxge/cfx_defaultrenderdevice.h b/core/fxge/cfx_defaultrenderdevice.h
index 112c4c7..4d94b7a 100644
--- a/core/fxge/cfx_defaultrenderdevice.h
+++ b/core/fxge/cfx_defaultrenderdevice.h
@@ -35,12 +35,6 @@
 #if defined(_SKIA_SUPPORT_)
   bool AttachCanvas(SkCanvas* canvas);
   void Clear(uint32_t color);
-  bool SetBitsWithMask(const RetainPtr<CFX_DIBBase>& pBitmap,
-                       const RetainPtr<CFX_DIBBase>& pMask,
-                       int left,
-                       int top,
-                       int bitmap_alpha,
-                       BlendMode blend_type) override;
 #endif
 
   // Runtime check to see if Skia is the renderer variant in use.
diff --git a/core/fxge/cfx_renderdevice.h b/core/fxge/cfx_renderdevice.h
index e1d9487..5782f95 100644
--- a/core/fxge/cfx_renderdevice.h
+++ b/core/fxge/cfx_renderdevice.h
@@ -215,12 +215,12 @@
   bool MultiplyAlpha(const RetainPtr<CFX_DIBBase>& mask);
 
 #if defined(_SKIA_SUPPORT_)
-  virtual bool SetBitsWithMask(const RetainPtr<CFX_DIBBase>& pBitmap,
-                               const RetainPtr<CFX_DIBBase>& pMask,
-                               int left,
-                               int top,
-                               int bitmap_alpha,
-                               BlendMode blend_type);
+  bool SetBitsWithMask(const RetainPtr<CFX_DIBBase>& pBitmap,
+                       const RetainPtr<CFX_DIBBase>& pMask,
+                       int left,
+                       int top,
+                       int bitmap_alpha,
+                       BlendMode blend_type);
 #endif
 
  protected:
diff --git a/core/fxge/dib/cfx_dibbase.h b/core/fxge/dib/cfx_dibbase.h
index 4b8724d..5b1c6bf 100644
--- a/core/fxge/dib/cfx_dibbase.h
+++ b/core/fxge/dib/cfx_dibbase.h
@@ -90,12 +90,11 @@
                       const CFX_ClipRgn* pClipRgn) const;
 
 #if defined(_SKIA_SUPPORT_)
-  // Realizes an `SkImage` from this DIB. `force_alpha` forces gray images to be
-  // treated as 8-bit alpha.
+  // Realizes an `SkImage` from this DIB.
   //
   // This may share the underlying pixels, in which case, this DIB should not be
   // modified during the lifetime of the `SkImage`.
-  virtual sk_sp<SkImage> RealizeSkImage(bool force_alpha) const;
+  virtual sk_sp<SkImage> RealizeSkImage() const;
 #endif  // defined(_SKIA_SUPPORT_)
 
  protected:
diff --git a/core/fxge/skia/cfx_dibbase_skia.cpp b/core/fxge/skia/cfx_dibbase_skia.cpp
index 73179ef..d655641 100644
--- a/core/fxge/skia/cfx_dibbase_skia.cpp
+++ b/core/fxge/skia/cfx_dibbase_skia.cpp
@@ -218,10 +218,7 @@
 
 }  // namespace
 
-sk_sp<SkImage> CFX_DIBBase::RealizeSkImage(bool force_alpha) const {
-  const SkColorType color_type = force_alpha || IsMaskFormat()
-                                     ? SkColorType::kAlpha_8_SkColorType
-                                     : SkColorType::kGray_8_SkColorType;
+sk_sp<SkImage> CFX_DIBBase::RealizeSkImage() const {
   switch (GetBPP()) {
     case 1: {
       // By default, the two colors for grayscale are 0xFF and 0x00 unless they
@@ -247,7 +244,8 @@
       }
 
       return CreateSkiaImageFromTransformedDib</*source_bits_per_pixel=*/1>(
-          *this, color_type, kPremul_SkAlphaType,
+          *this, IsMaskFormat() ? kAlpha_8_SkColorType : kGray_8_SkColorType,
+          kPremul_SkAlphaType,
           [color0, color1](bool bit) { return bit ? color1 : color0; });
     }
 
@@ -264,7 +262,9 @@
               return palette[index];
             });
       }
-      return CreateSkiaImageFromDib(this, color_type, kPremul_SkAlphaType);
+      return CreateSkiaImageFromDib(
+          this, IsMaskFormat() ? kAlpha_8_SkColorType : kGray_8_SkColorType,
+          kPremul_SkAlphaType);
 
     case 24:
       return CreateSkiaImageFromTransformedDib</*source_bits_per_pixel=*/24>(
diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp
index ff2c8eb..1e803bf 100644
--- a/core/fxge/skia/fx_skia_device.cpp
+++ b/core/fxge/skia/fx_skia_device.cpp
@@ -956,10 +956,11 @@
     return false;
   }
 
-  sk_sp<SkImage> skia_mask = mask->RealizeSkImage(/*force_alpha=*/true);
+  sk_sp<SkImage> skia_mask = mask->RealizeSkImage();
   if (!skia_mask) {
     return false;
   }
+  DCHECK_EQ(skia_mask->colorType(), kAlpha_8_SkColorType);
 
   SkPaint paint;
   paint.setBlendMode(SkBlendMode::kDstIn);
@@ -1487,15 +1488,17 @@
     BlendMode blend_type) {
   DebugValidate(m_pBitmap, m_pBackdropBitmap);
 
-  sk_sp<SkImage> skia_source = pSource->RealizeSkImage(/*force_alpha=*/false);
+  sk_sp<SkImage> skia_source = pSource->RealizeSkImage();
   if (!skia_source) {
     return false;
   }
 
-  sk_sp<SkImage> skia_mask = pMask->RealizeSkImage(/*force_alpha=*/true);
+  DCHECK(pMask->IsMaskFormat());
+  sk_sp<SkImage> skia_mask = pMask->RealizeSkImage();
   if (!skia_mask) {
     return false;
   }
+  DCHECK_EQ(skia_mask->colorType(), kAlpha_8_SkColorType);
 
   {
     SkAutoCanvasRestore scoped_save_restore(m_pCanvas, /*doSave=*/true);
@@ -1556,7 +1559,7 @@
     BlendMode blend_type) {
   DebugValidate(m_pBitmap, m_pBackdropBitmap);
 
-  sk_sp<SkImage> skia_source = pSource->RealizeSkImage(/*force_alpha=*/false);
+  sk_sp<SkImage> skia_source = pSource->RealizeSkImage();
   if (!skia_source) {
     return false;
   }
@@ -1653,14 +1656,3 @@
   SetDeviceDriver(std::move(driver));
   return true;
 }
-
-bool CFX_DefaultRenderDevice::SetBitsWithMask(
-    const RetainPtr<CFX_DIBBase>& pBitmap,
-    const RetainPtr<CFX_DIBBase>& pMask,
-    int left,
-    int top,
-    int bitmap_alpha,
-    BlendMode blend_type) {
-  return static_cast<CFX_SkiaDeviceDriver*>(GetDeviceDriver())
-      ->SetBitsWithMask(pBitmap, pMask, left, top, bitmap_alpha, blend_type);
-}
