diff --git a/core/fxge/cfx_face.cpp b/core/fxge/cfx_face.cpp
index d838a4b..50e0bc3 100644
--- a/core/fxge/cfx_face.cpp
+++ b/core/fxge/cfx_face.cpp
@@ -4,12 +4,14 @@
 
 #include "core/fxge/cfx_face.h"
 
+#include <utility>
+
 #include "third_party/base/check.h"
 #include "third_party/base/numerics/safe_conversions.h"
 
 // static
 RetainPtr<CFX_Face> CFX_Face::New(FT_Library library,
-                                  const RetainPtr<Retainable>& pDesc,
+                                  RetainPtr<Retainable> pDesc,
                                   pdfium::span<const FT_Byte> data,
                                   FT_Long face_index) {
   FXFT_FaceRec* pRec = nullptr;
@@ -18,7 +20,8 @@
                          face_index, &pRec) != 0) {
     return nullptr;
   }
-  return pdfium::WrapRetain(new CFX_Face(pRec, pDesc));
+  // Private ctor.
+  return pdfium::WrapRetain(new CFX_Face(pRec, std::move(pDesc)));
 }
 
 // static
@@ -29,11 +32,12 @@
   if (FT_Open_Face(library, args, face_index, &pRec) != 0)
     return nullptr;
 
+  // Private ctor.
   return pdfium::WrapRetain(new CFX_Face(pRec, nullptr));
 }
 
-CFX_Face::CFX_Face(FXFT_FaceRec* rec, const RetainPtr<Retainable>& pDesc)
-    : m_pRec(rec), m_pDesc(pDesc) {
+CFX_Face::CFX_Face(FXFT_FaceRec* rec, RetainPtr<Retainable> pDesc)
+    : m_pRec(rec), m_pDesc(std::move(pDesc)) {
   DCHECK(m_pRec);
 }
 
diff --git a/core/fxge/cfx_face.h b/core/fxge/cfx_face.h
index a4f527f..4ab5c78 100644
--- a/core/fxge/cfx_face.h
+++ b/core/fxge/cfx_face.h
@@ -13,7 +13,7 @@
 class CFX_Face final : public Retainable, public Observable {
  public:
   static RetainPtr<CFX_Face> New(FT_Library library,
-                                 const RetainPtr<Retainable>& pDesc,
+                                 RetainPtr<Retainable> pDesc,
                                  pdfium::span<const FT_Byte> data,
                                  FT_Long face_index);
 
@@ -26,7 +26,7 @@
   FXFT_FaceRec* GetRec() { return m_pRec.get(); }
 
  private:
-  CFX_Face(FXFT_FaceRec* pRec, const RetainPtr<Retainable>& pDesc);
+  CFX_Face(FXFT_FaceRec* pRec, RetainPtr<Retainable> pDesc);
 
   ScopedFXFTFaceRec const m_pRec;
   RetainPtr<Retainable> const m_pDesc;
diff --git a/core/fxge/cfx_fontmgr.cpp b/core/fxge/cfx_fontmgr.cpp
index 9b2b6f5..eacffc2 100644
--- a/core/fxge/cfx_fontmgr.cpp
+++ b/core/fxge/cfx_fontmgr.cpp
@@ -116,11 +116,12 @@
   return pNewDesc;
 }
 
-RetainPtr<CFX_Face> CFX_FontMgr::NewFixedFace(const RetainPtr<FontDesc>& pDesc,
+RetainPtr<CFX_Face> CFX_FontMgr::NewFixedFace(RetainPtr<FontDesc> pDesc,
                                               pdfium::span<const uint8_t> span,
                                               size_t face_index) {
-  RetainPtr<CFX_Face> face = CFX_Face::New(m_FTLibrary.get(), pDesc, span,
-                                           static_cast<FT_Long>(face_index));
+  RetainPtr<CFX_Face> face =
+      CFX_Face::New(m_FTLibrary.get(), std::move(pDesc), span,
+                    static_cast<FT_Long>(face_index));
   if (!face)
     return nullptr;
 
diff --git a/core/fxge/cfx_fontmgr.h b/core/fxge/cfx_fontmgr.h
index dfbb753..5bb9620 100644
--- a/core/fxge/cfx_fontmgr.h
+++ b/core/fxge/cfx_fontmgr.h
@@ -70,7 +70,7 @@
       std::unique_ptr<uint8_t, FxFreeDeleter> pData,
       size_t size);
 
-  RetainPtr<CFX_Face> NewFixedFace(const RetainPtr<FontDesc>& pDesc,
+  RetainPtr<CFX_Face> NewFixedFace(RetainPtr<FontDesc> pDesc,
                                    pdfium::span<const uint8_t> span,
                                    size_t face_index);
 
