diff --git a/core/fpdfapi/render/cpdf_progressiverenderer.cpp b/core/fpdfapi/render/cpdf_progressiverenderer.cpp
index 77823b0..5d88b84 100644
--- a/core/fpdfapi/render/cpdf_progressiverenderer.cpp
+++ b/core/fpdfapi/render/cpdf_progressiverenderer.cpp
@@ -13,6 +13,7 @@
 #include "core/fpdfapi/page/cpdf_pageobjectholder.h"
 #include "core/fpdfapi/render/cpdf_renderoptions.h"
 #include "core/fpdfapi/render/cpdf_renderstatus.h"
+#include "core/fxcrt/check.h"
 #include "core/fxcrt/pauseindicator_iface.h"
 #include "core/fxge/cfx_renderdevice.h"
 
@@ -20,7 +21,10 @@
     CPDF_RenderContext* pContext,
     CFX_RenderDevice* pDevice,
     const CPDF_RenderOptions* pOptions)
-    : m_pContext(pContext), m_pDevice(pDevice), m_pOptions(pOptions) {}
+    : m_pContext(pContext), m_pDevice(pDevice), m_pOptions(pOptions) {
+  CHECK(m_pContext);
+  CHECK(m_pDevice);
+}
 
 CPDF_ProgressiveRenderer::~CPDF_ProgressiveRenderer() {
   if (m_pRenderStatus) {
@@ -30,7 +34,7 @@
 }
 
 void CPDF_ProgressiveRenderer::Start(PauseIndicatorIface* pPause) {
-  if (!m_pContext || !m_pDevice || m_Status != kReady) {
+  if (m_Status != kReady) {
     m_Status = kFailed;
     return;
   }
diff --git a/core/fpdfdoc/cpdf_annotlist.cpp b/core/fpdfdoc/cpdf_annotlist.cpp
index f662e54..5e76277 100644
--- a/core/fpdfdoc/cpdf_annotlist.cpp
+++ b/core/fpdfdoc/cpdf_annotlist.cpp
@@ -29,7 +29,7 @@
 #include "core/fpdfdoc/cpdf_formfield.h"
 #include "core/fpdfdoc/cpdf_generateap.h"
 #include "core/fpdfdoc/cpdf_interactiveform.h"
-#include "core/fxge/cfx_renderdevice.h"
+#include "core/fxcrt/check.h"
 
 namespace {
 
@@ -231,11 +231,11 @@
 }
 
 void CPDF_AnnotList::DisplayPass(CPDF_Page* pPage,
-                                 CFX_RenderDevice* pDevice,
                                  CPDF_RenderContext* pContext,
                                  bool bPrinting,
                                  const CFX_Matrix& mtMatrix,
                                  bool bWidgetPass) {
+  CHECK(pContext);
   for (const auto& pAnnot : m_AnnotList) {
     bool bWidget = pAnnot->GetSubtype() == CPDF_Annot::Subtype::WIDGET;
     if ((bWidgetPass && !bWidget) || (!bWidgetPass && bWidget))
@@ -251,23 +251,18 @@
     if (!bPrinting && (annot_flags & pdfium::annotation_flags::kNoView))
       continue;
 
-    if (pContext) {
-      pAnnot->DrawInContext(pPage, pContext, mtMatrix,
-                            CPDF_Annot::AppearanceMode::kNormal);
-    } else if (!pAnnot->DrawAppearance(pPage, pDevice, mtMatrix,
-                                       CPDF_Annot::AppearanceMode::kNormal)) {
-      pAnnot->DrawBorder(pDevice, &mtMatrix);
-    }
+    pAnnot->DrawInContext(pPage, pContext, mtMatrix,
+                          CPDF_Annot::AppearanceMode::kNormal);
   }
 }
 
 void CPDF_AnnotList::DisplayAnnots(CPDF_Page* pPage,
-                                   CFX_RenderDevice* pDevice,
                                    CPDF_RenderContext* pContext,
                                    bool bPrinting,
                                    const CFX_Matrix& mtUser2Device,
                                    bool bShowWidget) {
-  DisplayPass(pPage, pDevice, pContext, bPrinting, mtUser2Device, false);
+  CHECK(pContext);
+  DisplayPass(pPage, pContext, bPrinting, mtUser2Device, false);
   if (bShowWidget)
-    DisplayPass(pPage, pDevice, pContext, bPrinting, mtUser2Device, true);
+    DisplayPass(pPage, pContext, bPrinting, mtUser2Device, true);
 }
diff --git a/core/fpdfdoc/cpdf_annotlist.h b/core/fpdfdoc/cpdf_annotlist.h
index ff98c8a..c6da73f 100644
--- a/core/fpdfdoc/cpdf_annotlist.h
+++ b/core/fpdfdoc/cpdf_annotlist.h
@@ -17,7 +17,6 @@
 #include "core/fxcrt/fx_coordinates.h"
 #include "core/fxcrt/unowned_ptr.h"
 
-class CFX_RenderDevice;
 class CPDF_Annot;
 class CPDF_Document;
 class CPDF_Page;
@@ -29,7 +28,6 @@
   ~CPDF_AnnotList() override;
 
   void DisplayAnnots(CPDF_Page* pPage,
-                     CFX_RenderDevice* pDevice,
                      CPDF_RenderContext* pContext,
                      bool bPrinting,
                      const CFX_Matrix& mtUser2Device,
@@ -41,7 +39,6 @@
 
  private:
   void DisplayPass(CPDF_Page* pPage,
-                   CFX_RenderDevice* pDevice,
                    CPDF_RenderContext* pContext,
                    bool bPrinting,
                    const CFX_Matrix& mtMatrix,
diff --git a/fpdfsdk/cpdfsdk_renderpage.cpp b/fpdfsdk/cpdfsdk_renderpage.cpp
index 757aa1f..eebbb26 100644
--- a/fpdfsdk/cpdfsdk_renderpage.cpp
+++ b/fpdfsdk/cpdfsdk_renderpage.cpp
@@ -74,8 +74,7 @@
 
     // TODO(https://crbug.com/pdfium/993) - maybe pass true here.
     const bool bShowWidget = false;
-    pList->DisplayAnnots(pPage, pContext->m_pDevice.get(),
-                         pContext->m_pContext.get(), bPrinting, matrix,
+    pList->DisplayAnnots(pPage, pContext->m_pContext.get(), bPrinting, matrix,
                          bShowWidget);
   }
 
