diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp
index b49be38..c292384 100644
--- a/fpdfsdk/fpdfview.cpp
+++ b/fpdfsdk/fpdfview.cpp
@@ -890,10 +890,10 @@
 DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_Create(int width,
                                                 int height,
                                                 int alpha) {
-  std::unique_ptr<CFX_DIBitmap> pBitmap(new CFX_DIBitmap);
-  if (!pBitmap->Create(width, height, alpha ? FXDIB_Argb : FXDIB_Rgb32)) {
+  auto pBitmap = pdfium::MakeUnique<CFX_DIBitmap>();
+  if (!pBitmap->Create(width, height, alpha ? FXDIB_Argb : FXDIB_Rgb32))
     return nullptr;
-  }
+
   return pBitmap.release();
 }
 
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
index 1995882..7a0ffeb 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
@@ -92,7 +92,7 @@
   if (!pApp)
     return false;
 
-  m_pXFADoc.reset(pApp->CreateDoc(&m_DocEnv, m_pPDFDoc.get()));
+  m_pXFADoc = pApp->CreateDoc(&m_DocEnv, m_pPDFDoc.get());
   if (!m_pXFADoc) {
     SetLastError(FPDF_ERR_XFALOAD);
     return false;
diff --git a/xfa/fxfa/app/xfa_ffapp.cpp b/xfa/fxfa/app/xfa_ffapp.cpp
index 273b9f5..219f06e 100644
--- a/xfa/fxfa/app/xfa_ffapp.cpp
+++ b/xfa/fxfa/app/xfa_ffapp.cpp
@@ -102,21 +102,17 @@
   return m_pDocHandler.get();
 }
 
-CXFA_FFDoc* CXFA_FFApp::CreateDoc(
+std::unique_ptr<CXFA_FFDoc> CXFA_FFApp::CreateDoc(
     IXFA_DocEnvironment* pDocEnvironment,
-    const CFX_RetainPtr<IFX_SeekableReadStream>& pStream) {
-  auto pDoc = pdfium::MakeUnique<CXFA_FFDoc>(this, pDocEnvironment);
-  return pDoc->OpenDoc(pStream) ? pDoc.release() : nullptr;
-}
-
-CXFA_FFDoc* CXFA_FFApp::CreateDoc(IXFA_DocEnvironment* pDocEnvironment,
-                                  CPDF_Document* pPDFDoc) {
+    CPDF_Document* pPDFDoc) {
   if (!pPDFDoc)
     return nullptr;
 
-  std::unique_ptr<CXFA_FFDoc> pDoc(new CXFA_FFDoc(this, pDocEnvironment));
-  bool bSuccess = pDoc->OpenDoc(pPDFDoc);
-  return bSuccess ? pDoc.release() : nullptr;
+  auto pDoc = pdfium::MakeUnique<CXFA_FFDoc>(this, pDocEnvironment);
+  if (!pDoc->OpenDoc(pPDFDoc))
+    return nullptr;
+
+  return pDoc;
 }
 
 void CXFA_FFApp::SetDefaultFontMgr(std::unique_ptr<CXFA_DefFontMgr> pFontMgr) {
diff --git a/xfa/fxfa/xfa_ffapp.h b/xfa/fxfa/xfa_ffapp.h
index bc6e948..411fd2d 100644
--- a/xfa/fxfa/xfa_ffapp.h
+++ b/xfa/fxfa/xfa_ffapp.h
@@ -35,10 +35,8 @@
   explicit CXFA_FFApp(IXFA_AppProvider* pProvider);
   ~CXFA_FFApp();
 
-  CXFA_FFDoc* CreateDoc(IXFA_DocEnvironment* pDocEnvironment,
-                        const CFX_RetainPtr<IFX_SeekableReadStream>& pStream);
-  CXFA_FFDoc* CreateDoc(IXFA_DocEnvironment* pDocEnvironment,
-                        CPDF_Document* pPDFDoc);
+  std::unique_ptr<CXFA_FFDoc> CreateDoc(IXFA_DocEnvironment* pDocEnvironment,
+                                        CPDF_Document* pPDFDoc);
   void SetDefaultFontMgr(std::unique_ptr<CXFA_DefFontMgr> pFontMgr);
 
   CXFA_FFDocHandler* GetDocHandler();
