diff --git a/xfa/fxfa/cxfa_ffdocview.cpp b/xfa/fxfa/cxfa_ffdocview.cpp
index c1a8a67..d021740e 100644
--- a/xfa/fxfa/cxfa_ffdocview.cpp
+++ b/xfa/fxfa/cxfa_ffdocview.cpp
@@ -253,7 +253,7 @@
     }
   }
   if (bChanged) {
-    m_pDoc->GetDocEnvironment()->SetChangeMark(m_pDoc);
+    m_pDoc->GetDocEnvironment()->SetChangeMark(m_pDoc.Get());
   }
 }
 int32_t CXFA_FFDocView::ProcessWidgetEvent(CXFA_EventParam* pParam,
@@ -382,7 +382,8 @@
   if (SetFocus(pNewFocus)) {
     m_pFocusAcc = pWidgetAcc;
     if (m_iStatus == XFA_DOCVIEW_LAYOUTSTATUS_End)
-      m_pDoc->GetDocEnvironment()->SetFocusWidget(m_pDoc, m_pFocusWidget.Get());
+      m_pDoc->GetDocEnvironment()->SetFocusWidget(m_pDoc.Get(),
+                                                  m_pFocusWidget.Get());
   }
 }
 
@@ -663,7 +664,7 @@
 }
 
 int32_t CXFA_FFDocView::RunCalculateWidgets() {
-  if (!m_pDoc->GetDocEnvironment()->IsCalculationsEnabled(m_pDoc)) {
+  if (!m_pDoc->GetDocEnvironment()->IsCalculationsEnabled(m_pDoc.Get())) {
     return XFA_EVENTERROR_Disabled;
   }
   int32_t iCounts = pdfium::CollectionSize<int32_t>(m_CalculateAccs);
@@ -690,7 +691,7 @@
 }
 
 bool CXFA_FFDocView::InitValidate(CXFA_Node* pNode) {
-  if (!m_pDoc->GetDocEnvironment()->IsValidationsEnabled(m_pDoc))
+  if (!m_pDoc->GetDocEnvironment()->IsValidationsEnabled(m_pDoc.Get()))
     return false;
 
   ExecEventActivityByDeepFirst(pNode, XFA_EVENT_Validate, false, true, nullptr);
@@ -699,7 +700,7 @@
 }
 
 bool CXFA_FFDocView::RunValidate() {
-  if (!m_pDoc->GetDocEnvironment()->IsValidationsEnabled(m_pDoc))
+  if (!m_pDoc->GetDocEnvironment()->IsValidationsEnabled(m_pDoc.Get()))
     return false;
 
   for (CXFA_WidgetAcc* pAcc : m_ValidateAccs) {
@@ -783,16 +784,17 @@
 }
 
 void CXFA_FFDocView::SetChangeMark() {
-  if (m_iStatus < XFA_DOCVIEW_LAYOUTSTATUS_End) {
+  if (m_iStatus < XFA_DOCVIEW_LAYOUTSTATUS_End)
     return;
-  }
-  m_pDoc->GetDocEnvironment()->SetChangeMark(m_pDoc);
+
+  m_pDoc->GetDocEnvironment()->SetChangeMark(m_pDoc.Get());
 }
+
 CXFA_Node* CXFA_FFDocView::GetRootSubform() {
   CXFA_Node* pFormPacketNode =
       ToNode(m_pDoc->GetXFADoc()->GetXFAObject(XFA_HASHCODE_Form));
-  if (!pFormPacketNode) {
+  if (!pFormPacketNode)
     return nullptr;
-  }
+
   return pFormPacketNode->GetFirstChildByClass(XFA_Element::Subform);
 }
diff --git a/xfa/fxfa/cxfa_ffdocview.h b/xfa/fxfa/cxfa_ffdocview.h
index 83d077b..3164bcf 100644
--- a/xfa/fxfa/cxfa_ffdocview.h
+++ b/xfa/fxfa/cxfa_ffdocview.h
@@ -43,7 +43,7 @@
   explicit CXFA_FFDocView(CXFA_FFDoc* pDoc);
   ~CXFA_FFDocView();
 
-  CXFA_FFDoc* GetDoc() { return m_pDoc; }
+  CXFA_FFDoc* GetDoc() { return m_pDoc.Get(); }
   int32_t StartLayout(int32_t iStartPage = 0);
   int32_t DoLayout();
   void StopLayout();
@@ -116,7 +116,7 @@
   bool ResetSingleWidgetAccData(CXFA_WidgetAcc* pWidgetAcc);
   CXFA_Node* GetRootSubform();
 
-  CXFA_FFDoc* const m_pDoc;
+  CFX_UnownedPtr<CXFA_FFDoc> const m_pDoc;
   std::unique_ptr<CXFA_FFWidgetHandler> m_pWidgetHandler;
   CXFA_LayoutProcessor* m_pXFADocLayout;  // Not owned.
   CFX_UnownedPtr<CXFA_WidgetAcc> m_pFocusAcc;
