diff --git a/core/fxge/agg/fx_agg_driver.cpp b/core/fxge/agg/fx_agg_driver.cpp
index 6e9e5d0..4f8028e 100644
--- a/core/fxge/agg/fx_agg_driver.cpp
+++ b/core/fxge/agg/fx_agg_driver.cpp
@@ -1120,7 +1120,8 @@
   agg::scanline_u8 scanline;
   agg::render_scanlines(rasterizer, scanline, final_render,
                         m_FillOptions.aliased_path);
-  m_pClipRgn->IntersectMaskF(path_rect.left, path_rect.top, pThisLayer);
+  m_pClipRgn->IntersectMaskF(path_rect.left, path_rect.top,
+                             std::move(pThisLayer));
 }
 
 bool CFX_AggDeviceDriver::SetClip_PathFill(
diff --git a/core/fxge/cfx_cliprgn.cpp b/core/fxge/cfx_cliprgn.cpp
index 79555d8..92c2dc5 100644
--- a/core/fxge/cfx_cliprgn.cpp
+++ b/core/fxge/cfx_cliprgn.cpp
@@ -31,7 +31,7 @@
 
 void CFX_ClipRgn::IntersectMaskRect(FX_RECT rect,
                                     FX_RECT mask_rect,
-                                    const RetainPtr<CFX_DIBitmap>& pMask) {
+                                    RetainPtr<CFX_DIBitmap> pOldMask) {
   m_Type = kMaskF;
   m_Box = rect;
   m_Box.Intersect(mask_rect);
@@ -40,10 +40,9 @@
     return;
   }
   if (m_Box == mask_rect) {
-    m_Mask = pMask;
+    m_Mask = std::move(pOldMask);
     return;
   }
-  RetainPtr<CFX_DIBitmap> pOldMask(pMask);
   m_Mask = pdfium::MakeRetain<CFX_DIBitmap>();
   m_Mask->Create(m_Box.Width(), m_Box.Height(), FXDIB_Format::k8bppMask);
   const int offset = m_Box.left - mask_rect.left;
@@ -58,12 +57,12 @@
 
 void CFX_ClipRgn::IntersectMaskF(int left,
                                  int top,
-                                 const RetainPtr<CFX_DIBitmap>& pMask) {
+                                 RetainPtr<CFX_DIBitmap> pMask) {
   DCHECK_EQ(pMask->GetFormat(), FXDIB_Format::k8bppMask);
   FX_RECT mask_box(left, top, left + pMask->GetWidth(),
                    top + pMask->GetHeight());
   if (m_Type == kRectI) {
-    IntersectMaskRect(m_Box, mask_box, pMask);
+    IntersectMaskRect(m_Box, mask_box, std::move(pMask));
     return;
   }
 
diff --git a/core/fxge/cfx_cliprgn.h b/core/fxge/cfx_cliprgn.h
index 5738a88..b176765 100644
--- a/core/fxge/cfx_cliprgn.h
+++ b/core/fxge/cfx_cliprgn.h
@@ -25,12 +25,12 @@
   RetainPtr<CFX_DIBitmap> GetMask() const { return m_Mask; }
 
   void IntersectRect(const FX_RECT& rect);
-  void IntersectMaskF(int left, int top, const RetainPtr<CFX_DIBitmap>& Mask);
+  void IntersectMaskF(int left, int top, RetainPtr<CFX_DIBitmap> Mask);
 
  private:
   void IntersectMaskRect(FX_RECT rect,
                          FX_RECT mask_rect,
-                         const RetainPtr<CFX_DIBitmap>& Mask);
+                         RetainPtr<CFX_DIBitmap> pOldMask);
 
   ClipType m_Type = kRectI;
   FX_RECT m_Box;
diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp
index 3d5cfbc..95fd036 100644
--- a/core/fxge/skia/fx_skia_device.cpp
+++ b/core/fxge/skia/fx_skia_device.cpp
@@ -1981,7 +1981,8 @@
   SkPaint paint;
   paint.setAntiAlias(!m_FillOptions.aliased_path);
   canvas->drawPath(path, paint);
-  m_pClipRgn->IntersectMaskF(path_rect.left, path_rect.top, pThisLayer);
+  m_pClipRgn->IntersectMaskF(path_rect.left, path_rect.top,
+                             std::move(pThisLayer));
 }
 #endif  // defined(_SKIA_SUPPORT_PATHS_)
 
