diff --git a/fxjs/xfa/cjx_node.cpp b/fxjs/xfa/cjx_node.cpp
index 642eda8..ba7145f 100644
--- a/fxjs/xfa/cjx_node.cpp
+++ b/fxjs/xfa/cjx_node.cpp
@@ -271,8 +271,8 @@
 
   CFX_XMLParser parser(stream);
   std::unique_ptr<CFX_XMLDocument> xml_doc = parser.Parse();
-  auto builder = std::make_unique<CXFA_DocumentBuilder>(GetDocument());
-  CFX_XMLNode* pXMLNode = builder->Build(xml_doc.get());
+  CXFA_DocumentBuilder builder(GetDocument());
+  CFX_XMLNode* pXMLNode = builder.Build(xml_doc.get());
   if (!pXMLNode)
     return CJS_Result::Success();
 
@@ -319,8 +319,8 @@
     pFakeXMLRoot->AppendLastChild(pXMLNode);
   }
 
-  builder->ConstructXFANode(pFakeRoot, pFakeXMLRoot);
-  pFakeRoot = builder->GetRootNode();
+  builder.ConstructXFANode(pFakeRoot, pFakeXMLRoot);
+  pFakeRoot = builder.GetRootNode();
   if (!pFakeRoot)
     return CJS_Result::Success();
 
diff --git a/xfa/fxfa/parser/cxfa_document_builder.h b/xfa/fxfa/parser/cxfa_document_builder.h
index 613aa92..a6ee86c 100644
--- a/xfa/fxfa/parser/cxfa_document_builder.h
+++ b/xfa/fxfa/parser/cxfa_document_builder.h
@@ -10,7 +10,8 @@
 #include <utility>
 
 #include "core/fxcrt/fx_string.h"
-#include "v8/include/cppgc/persistent.h"
+#include "core/fxcrt/unowned_ptr.h"
+#include "v8/include/cppgc/macros.h"
 #include "xfa/fxfa/fxfa_basic.h"
 
 class CFX_XMLDocument;
@@ -20,6 +21,8 @@
 class CFX_XMLInstruction;
 
 class CXFA_DocumentBuilder {
+  CPPGC_STACK_ALLOCATED();  // Allow Raw/Unowned pointers.
+
  public:
   explicit CXFA_DocumentBuilder(CXFA_Document* pNodeFactory);
   ~CXFA_DocumentBuilder();
@@ -63,8 +66,8 @@
                         CFX_XMLInstruction* pXMLInstruction,
                         XFA_PacketType ePacketID);
 
-  cppgc::Persistent<CXFA_Document> node_factory_;
-  cppgc::Persistent<CXFA_Node> root_node_;
+  UnownedPtr<CXFA_Document> node_factory_;
+  UnownedPtr<CXFA_Node> root_node_;
   UnownedPtr<CFX_XMLDocument> xml_doc_;
   size_t execute_recursion_depth_ = 0;
 };
diff --git a/xfa/fxfa/parser/cxfa_document_builder_unittest.cpp b/xfa/fxfa/parser/cxfa_document_builder_unittest.cpp
index 63283a1..12cdf9f 100644
--- a/xfa/fxfa/parser/cxfa_document_builder_unittest.cpp
+++ b/xfa/fxfa/parser/cxfa_document_builder_unittest.cpp
@@ -19,11 +19,9 @@
     FXGCUnitTest::SetUp();
     doc_ = cppgc::MakeGarbageCollected<CXFA_Document>(
         heap()->GetAllocationHandle(), nullptr, heap(), nullptr);
-    builder_ = std::make_unique<CXFA_DocumentBuilder>(doc_);
   }
 
   void TearDown() override {
-    builder_.reset();
     doc_ = nullptr;
     FXGCUnitTest::TearDown();
   }
@@ -34,14 +32,15 @@
     xml_ = CFX_XMLParser(stream).Parse();
     if (!xml_)
       return nullptr;
-    if (!builder_->BuildDocument(xml_.get(), XFA_PacketType::Config))
+
+    CXFA_DocumentBuilder builder(doc_);
+    if (!builder.BuildDocument(xml_.get(), XFA_PacketType::Config))
       return nullptr;
-    return builder_->GetRootNode();
+    return builder.GetRootNode();
   }
 
  private:
   std::unique_ptr<CFX_XMLDocument> xml_;
-  std::unique_ptr<CXFA_DocumentBuilder> builder_;
   cppgc::Persistent<CXFA_Document> doc_;
 };
 
