diff --git a/core/fxge/android/cfpf_skiafontmgr.cpp b/core/fxge/android/cfpf_skiafontmgr.cpp
index 597e9f0..7d853ff 100644
--- a/core/fxge/android/cfpf_skiafontmgr.cpp
+++ b/core/fxge/android/cfpf_skiafontmgr.cpp
@@ -232,14 +232,19 @@
 CFPF_SkiaFontMgr::~CFPF_SkiaFontMgr() {
   m_FamilyFonts.clear();
   m_FontFaces.clear();
-  if (m_FTLibrary)
-    FT_Done_FreeType(m_FTLibrary);
 }
 
 bool CFPF_SkiaFontMgr::InitFTLibrary() {
-  if (!m_FTLibrary)
-    FT_Init_FreeType(&m_FTLibrary);
-  return !!m_FTLibrary;
+  if (m_FTLibrary)
+    return true;
+
+  FXFT_LibraryRec* pLibrary = nullptr;
+  FT_Init_FreeType(&pLibrary);
+  if (!pLibrary)
+    return false;
+
+  m_FTLibrary.reset(pLibrary);
+  return true;
 }
 
 void CFPF_SkiaFontMgr::LoadSystemFonts() {
@@ -342,7 +347,7 @@
   args.flags = FT_OPEN_PATHNAME;
   args.pathname = const_cast<FT_String*>(bsFile.unterminated_c_str());
   FXFT_FaceRec* face;
-  if (FT_Open_Face(m_FTLibrary, &args, iFaceIndex, &face))
+  if (FT_Open_Face(m_FTLibrary.get(), &args, iFaceIndex, &face))
     return nullptr;
   FT_Set_Pixel_Sizes(face, 0, 64);
   return face;
diff --git a/core/fxge/android/cfpf_skiafontmgr.h b/core/fxge/android/cfpf_skiafontmgr.h
index 49d1516..3b660f5 100644
--- a/core/fxge/android/cfpf_skiafontmgr.h
+++ b/core/fxge/android/cfpf_skiafontmgr.h
@@ -37,7 +37,7 @@
                                                 const ByteString& file);
 
   bool m_bLoaded = false;
-  FXFT_LibraryRec* m_FTLibrary = nullptr;
+  ScopedFXFTLibraryRec m_FTLibrary;
   std::vector<std::unique_ptr<CFPF_SkiaPathFont>> m_FontFaces;
   std::map<uint32_t, std::unique_ptr<CFPF_SkiaFont>> m_FamilyFonts;
 };
diff --git a/core/fxge/cfx_fontmapper.cpp b/core/fxge/cfx_fontmapper.cpp
index 9e792d0..c3df1cb 100644
--- a/core/fxge/cfx_fontmapper.cpp
+++ b/core/fxge/cfx_fontmapper.cpp
@@ -255,23 +255,9 @@
 
 }  // namespace
 
-CFX_FontMapper::CFX_FontMapper(CFX_FontMgr* mgr)
-    : m_bListLoaded(false), m_pFontMgr(mgr) {
-  m_MMFaces[0] = nullptr;
-  m_MMFaces[1] = nullptr;
-  memset(m_FoxitFaces, 0, sizeof(m_FoxitFaces));
-}
+CFX_FontMapper::CFX_FontMapper(CFX_FontMgr* mgr) : m_pFontMgr(mgr) {}
 
-CFX_FontMapper::~CFX_FontMapper() {
-  for (size_t i = 0; i < FX_ArraySize(m_FoxitFaces); ++i) {
-    if (m_FoxitFaces[i])
-      FT_Done_Face(m_FoxitFaces[i]);
-  }
-  if (m_MMFaces[0])
-    FT_Done_Face(m_MMFaces[0]);
-  if (m_MMFaces[1])
-    FT_Done_Face(m_MMFaces[1]);
-}
+CFX_FontMapper::~CFX_FontMapper() = default;
 
 void CFX_FontMapper::SetSystemFontInfo(
     std::unique_ptr<SystemFontInfoIface> pFontInfo) {
@@ -357,12 +343,13 @@
                                                int pitch_family) {
   if (iBaseFont < kNumStandardFonts) {
     if (m_FoxitFaces[iBaseFont])
-      return m_FoxitFaces[iBaseFont];
+      return m_FoxitFaces[iBaseFont].get();
     Optional<pdfium::span<const uint8_t>> font_data =
         m_pFontMgr->GetBuiltinFont(iBaseFont);
     if (font_data.has_value()) {
-      m_FoxitFaces[iBaseFont] = m_pFontMgr->GetFixedFace(font_data.value(), 0);
-      return m_FoxitFaces[iBaseFont];
+      m_FoxitFaces[iBaseFont].reset(
+          m_pFontMgr->GetFixedFace(font_data.value(), 0));
+      return m_FoxitFaces[iBaseFont].get();
     }
   }
   pSubstFont->m_bFlagMM = true;
@@ -373,17 +360,17 @@
     pSubstFont->m_Weight = pSubstFont->m_Weight * 4 / 5;
     pSubstFont->m_Family = "Chrome Serif";
     if (!m_MMFaces[1]) {
-      m_MMFaces[1] =
-          m_pFontMgr->GetFixedFace(m_pFontMgr->GetBuiltinFont(14).value(), 0);
+      m_MMFaces[1].reset(
+          m_pFontMgr->GetFixedFace(m_pFontMgr->GetBuiltinFont(14).value(), 0));
     }
-    return m_MMFaces[1];
+    return m_MMFaces[1].get();
   }
   pSubstFont->m_Family = "Chrome Sans";
   if (!m_MMFaces[0]) {
-    m_MMFaces[0] =
-        m_pFontMgr->GetFixedFace(m_pFontMgr->GetBuiltinFont(15).value(), 0);
+    m_MMFaces[0].reset(
+        m_pFontMgr->GetFixedFace(m_pFontMgr->GetBuiltinFont(15).value(), 0));
   }
-  return m_MMFaces[0];
+  return m_MMFaces[0].get();
 }
 
 FXFT_FaceRec* CFX_FontMapper::FindSubstFont(const ByteString& name,
@@ -673,11 +660,11 @@
 
 bool CFX_FontMapper::IsBuiltinFace(const FXFT_FaceRec* face) const {
   for (size_t i = 0; i < MM_FACE_COUNT; ++i) {
-    if (m_MMFaces[i] == face)
+    if (m_MMFaces[i].get() == face)
       return true;
   }
   for (size_t i = 0; i < FOXIT_FACE_COUNT; ++i) {
-    if (m_FoxitFaces[i] == face)
+    if (m_FoxitFaces[i].get() == face)
       return true;
   }
   return false;
diff --git a/core/fxge/cfx_fontmapper.h b/core/fxge/cfx_fontmapper.h
index 8096976..7b9b00b 100644
--- a/core/fxge/cfx_fontmapper.h
+++ b/core/fxge/cfx_fontmapper.h
@@ -71,13 +71,13 @@
     uint32_t charset;
   };
 
-  bool m_bListLoaded;
+  bool m_bListLoaded = false;
   ByteString m_LastFamily;
   std::vector<FaceData> m_FaceArray;
   std::unique_ptr<SystemFontInfoIface> m_pFontInfo;
   UnownedPtr<CFX_FontMgr> const m_pFontMgr;
-  FXFT_FaceRec* m_MMFaces[MM_FACE_COUNT];
-  FXFT_FaceRec* m_FoxitFaces[FOXIT_FACE_COUNT];
+  ScopedFXFTFaceRec m_MMFaces[MM_FACE_COUNT];
+  ScopedFXFTFaceRec m_FoxitFaces[FOXIT_FACE_COUNT];
 };
 
 #endif  // CORE_FXGE_CFX_FONTMAPPER_H_
diff --git a/core/fxge/cfx_fontmgr.cpp b/core/fxge/cfx_fontmgr.cpp
index aff16d1..28a7e1e 100644
--- a/core/fxge/cfx_fontmgr.cpp
+++ b/core/fxge/cfx_fontmgr.cpp
@@ -79,19 +79,15 @@
 CFX_FontMgr::CFX_FontMgr()
     : m_pBuiltinMapper(pdfium::MakeUnique<CFX_FontMapper>(this)) {}
 
-CFX_FontMgr::~CFX_FontMgr() {
-  // |m_FaceMap| and |m_pBuiltinMapper| reference |m_FTLibrary|, so they must
-  // be destroyed first.
-  m_FaceMap.clear();
-  m_pBuiltinMapper.reset();
-  FT_Done_FreeType(m_FTLibrary);
-}
+CFX_FontMgr::~CFX_FontMgr() = default;
 
 void CFX_FontMgr::InitFTLibrary() {
   if (m_FTLibrary)
     return;
 
-  FT_Init_FreeType(&m_FTLibrary);
+  FXFT_LibraryRec* pLibrary = nullptr;
+  FT_Init_FreeType(&pLibrary);
+  m_FTLibrary.reset(pLibrary);
   m_FTLibrarySupportsHinting =
       SetLcdFilterMode() || FreeTypeVersionSupportsHinting();
 }
@@ -137,8 +133,8 @@
   InitFTLibrary();
 
   FXFT_FaceRec* face = nullptr;
-  int ret =
-      FT_New_Memory_Face(m_FTLibrary, pData.get(), size, face_index, &face);
+  int ret = FT_New_Memory_Face(m_FTLibrary.get(), pData.get(), size, face_index,
+                               &face);
   if (ret)
     return nullptr;
 
@@ -192,8 +188,8 @@
                                         int face_index) {
   InitFTLibrary();
   FXFT_FaceRec* face = nullptr;
-  if (FT_New_Memory_Face(m_FTLibrary, span.data(), span.size(), face_index,
-                         &face)) {
+  if (FT_New_Memory_Face(m_FTLibrary.get(), span.data(), span.size(),
+                         face_index, &face)) {
     return nullptr;
   }
   return FT_Set_Pixel_Sizes(face, 64, 64) ? nullptr : face;
@@ -235,7 +231,7 @@
   FT_Int major;
   FT_Int minor;
   FT_Int patch;
-  FT_Library_Version(m_FTLibrary, &major, &minor, &patch);
+  FT_Library_Version(m_FTLibrary.get(), &major, &minor, &patch);
   // Freetype versions >= 2.8.1 support hinting even if subpixel rendering is
   // disabled. https://sourceforge.net/projects/freetype/files/freetype2/2.8.1/
   return major > 2 || (major == 2 && minor > 8) ||
@@ -243,6 +239,6 @@
 }
 
 bool CFX_FontMgr::SetLcdFilterMode() const {
-  return FT_Library_SetLcdFilter(m_FTLibrary, FT_LCD_FILTER_DEFAULT) !=
+  return FT_Library_SetLcdFilter(m_FTLibrary.get(), FT_LCD_FILTER_DEFAULT) !=
          FT_Err_Unimplemented_Feature;
 }
diff --git a/core/fxge/cfx_fontmgr.h b/core/fxge/cfx_fontmgr.h
index f021866..bb388db 100644
--- a/core/fxge/cfx_fontmgr.h
+++ b/core/fxge/cfx_fontmgr.h
@@ -63,16 +63,18 @@
   // Always present.
   CFX_FontMapper* GetBuiltinMapper() const { return m_pBuiltinMapper.get(); }
 
-  FXFT_LibraryRec* GetFTLibrary() const { return m_FTLibrary; }
+  FXFT_LibraryRec* GetFTLibrary() const { return m_FTLibrary.get(); }
   bool FTLibrarySupportsHinting() const { return m_FTLibrarySupportsHinting; }
 
  private:
   bool FreeTypeVersionSupportsHinting() const;
   bool SetLcdFilterMode() const;
 
+  // Must come before |m_pBuiltinMapper| and |m_FaceMap|.
+  ScopedFXFTLibraryRec m_FTLibrary;
+
   std::unique_ptr<CFX_FontMapper> m_pBuiltinMapper;
   std::map<ByteString, std::unique_ptr<CTTFontDesc>> m_FaceMap;
-  FXFT_LibraryRec* m_FTLibrary = nullptr;
   bool m_FTLibrarySupportsHinting = false;
 };
 
diff --git a/core/fxge/fx_freetype.h b/core/fxge/fx_freetype.h
index 0832d50..2dd379a 100644
--- a/core/fxge/fx_freetype.h
+++ b/core/fxge/fx_freetype.h
@@ -8,6 +8,9 @@
 #define CORE_FXGE_FX_FREETYPE_H_
 
 #include <ft2build.h>
+
+#include <memory>
+
 #include FT_FREETYPE_H
 #include FT_GLYPH_H
 #include FT_LCD_FILTER_H
@@ -20,6 +23,24 @@
 using FXFT_StreamRec = struct FT_StreamRec_;
 using FXFT_MM_VarPtr = FT_MM_Var*;
 
+struct FXFTFaceRecDeleter {
+  inline void operator()(FXFT_FaceRec* pRec) {
+    if (pRec)
+      FT_Done_Face(pRec);
+  }
+};
+
+struct FXFTLibraryRecDeleter {
+  inline void operator()(FXFT_LibraryRec* pRec) {
+    if (pRec)
+      FT_Done_FreeType(pRec);
+  }
+};
+
+using ScopedFXFTFaceRec = std::unique_ptr<FXFT_FaceRec, FXFTFaceRecDeleter>;
+using ScopedFXFTLibraryRec =
+    std::unique_ptr<FXFT_LibraryRec, FXFTLibraryRecDeleter>;
+
 #define FXFT_Select_Charmap(face, encoding) \
   FT_Select_Charmap(face, static_cast<FT_Encoding>(encoding))
 #define FXFT_Get_Name_Index(face, name) \
