diff --git a/fpdfsdk/cpdfsdk_pageview.cpp b/fpdfsdk/cpdfsdk_pageview.cpp
index 4c82e7f..1bbaeeb 100644
--- a/fpdfsdk/cpdfsdk_pageview.cpp
+++ b/fpdfsdk/cpdfsdk_pageview.cpp
@@ -543,11 +543,11 @@
   CPDF_Document::Extension* pContext = m_pFormFillEnv->GetDocExtension();
   if (pContext && pContext->ContainsExtensionFullForm()) {
     CXFA_FFPageView* pageView = protector->GetXFAPageView();
-    CXFA_FFWidget::IteratorIface* pWidgetHandler =
-        pageView->CreateGCedFormWidgetIterator(Mask<XFA_WidgetStatus>{
-            XFA_WidgetStatus::kVisible, XFA_WidgetStatus::kViewable});
+    CXFA_FFPageWidgetIterator pWidgetHandler(
+        pageView, Mask<XFA_WidgetStatus>{XFA_WidgetStatus::kVisible,
+                                         XFA_WidgetStatus::kViewable});
 
-    while (CXFA_FFWidget* pXFAAnnot = pWidgetHandler->MoveToNext()) {
+    while (CXFA_FFWidget* pXFAAnnot = pWidgetHandler.MoveToNext()) {
       m_SDKAnnotArray.push_back(
           std::make_unique<CPDFXFA_Widget>(pXFAAnnot, this));
       m_SDKAnnotArray.back()->OnLoad();
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
index 93eae67..6f4f2b7 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
@@ -271,12 +271,11 @@
   CXFA_FFWidgetHandler* pWidgetHandler = pDocView->GetWidgetHandler();
   if (!pWidgetHandler)
     return -1;
-
-  CXFA_FFWidget::IteratorIface* pWidgetIterator =
-      pPageView->CreateGCedFormWidgetIterator(XFA_WidgetStatus::kViewable);
+  CXFA_FFPageWidgetIterator pWidgetIterator(pPageView,
+                                            XFA_WidgetStatus::kViewable);
 
   CXFA_FFWidget* pXFAAnnot;
-  while ((pXFAAnnot = pWidgetIterator->MoveToNext()) != nullptr) {
+  while ((pXFAAnnot = pWidgetIterator.MoveToNext()) != nullptr) {
     if (pXFAAnnot->GetFormFieldType() == FormFieldType::kXFA)
       continue;
 
@@ -298,12 +297,12 @@
   gs.SetClipRect(rectClip);
 
   CXFA_FFPageView* xfaView = GetXFAPageView();
-  CXFA_FFWidget::IteratorIface* pWidgetIterator =
-      xfaView->CreateGCedFormWidgetIterator(Mask<XFA_WidgetStatus>{
-          XFA_WidgetStatus::kVisible, XFA_WidgetStatus::kViewable});
+  CXFA_FFPageWidgetIterator pWidgetIterator(
+      xfaView, Mask<XFA_WidgetStatus>{XFA_WidgetStatus::kVisible,
+                                      XFA_WidgetStatus::kViewable});
 
   while (true) {
-    CXFA_FFWidget* pWidget = pWidgetIterator->MoveToNext();
+    CXFA_FFWidget* pWidget = pWidgetIterator.MoveToNext();
     if (!pWidget)
       break;
 
diff --git a/xfa/fxfa/cxfa_ffpageview.cpp b/xfa/fxfa/cxfa_ffpageview.cpp
index 47d0a4c..5549bfb 100644
--- a/xfa/fxfa/cxfa_ffpageview.cpp
+++ b/xfa/fxfa/cxfa_ffpageview.cpp
@@ -261,13 +261,6 @@
   return GetPageMatrix(CFX_RectF(0, 0, pItem->GetPageSize()), rtDisp, iRotate);
 }
 
-CXFA_FFWidget::IteratorIface* CXFA_FFPageView::CreateGCedFormWidgetIterator(
-    Mask<XFA_WidgetStatus> dwWidgetFilter) {
-  return cppgc::MakeGarbageCollected<CXFA_FFPageWidgetIterator>(
-      GetDocView()->GetDoc()->GetHeap()->GetAllocationHandle(), this,
-      dwWidgetFilter);
-}
-
 CXFA_FFWidget::IteratorIface* CXFA_FFPageView::CreateGCedTraverseWidgetIterator(
     Mask<XFA_WidgetStatus> dwWidgetFilter) {
   return cppgc::MakeGarbageCollected<CXFA_FFTabOrderPageWidgetIterator>(
diff --git a/xfa/fxfa/cxfa_ffpageview.h b/xfa/fxfa/cxfa_ffpageview.h
index 214e1f2..9af01c0 100644
--- a/xfa/fxfa/cxfa_ffpageview.h
+++ b/xfa/fxfa/cxfa_ffpageview.h
@@ -37,9 +37,7 @@
   CFX_RectF GetPageViewRect() const;
   CFX_Matrix GetDisplayMatrix(const FX_RECT& rtDisp, int32_t iRotate) const;
 
-  // These always return a non-null iterator from the gc heap.
-  CXFA_FFWidget::IteratorIface* CreateGCedFormWidgetIterator(
-      Mask<XFA_WidgetStatus> dwWidgetFilter);
+  // This always returns a non-null iterator from the gc heap.
   CXFA_FFWidget::IteratorIface* CreateGCedTraverseWidgetIterator(
       Mask<XFA_WidgetStatus> dwWidgetFilter);
 
@@ -51,11 +49,12 @@
   cppgc::Member<CXFA_ViewLayoutItem> m_pLayoutItem;
 };
 
-class CXFA_FFPageWidgetIterator final
-    : public cppgc::GarbageCollected<CXFA_FFPageWidgetIterator>,
-      public CXFA_FFWidget::IteratorIface {
+class CXFA_FFPageWidgetIterator final : public CXFA_FFWidget::IteratorIface {
+  CPPGC_STACK_ALLOCATED();
+
  public:
-  CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
+  CXFA_FFPageWidgetIterator(CXFA_FFPageView* pPageView,
+                            Mask<XFA_WidgetStatus> dwFilter);
   ~CXFA_FFPageWidgetIterator() override;
 
   void Trace(cppgc::Visitor* visitor) const {}
@@ -69,9 +68,6 @@
   bool SetCurrentWidget(CXFA_FFWidget* hWidget) override;
 
  private:
-  CXFA_FFPageWidgetIterator(CXFA_FFPageView* pPageView,
-                            Mask<XFA_WidgetStatus> dwFilter);
-
   CXFA_LayoutItemIterator m_sIterator;
   const Mask<XFA_WidgetStatus> m_dwFilter;
   const bool m_bIgnoreRelevant;
