diff --git a/core/fpdfapi/parser/cpdf_dictionary.h b/core/fpdfapi/parser/cpdf_dictionary.h
index 7b83997..a0e678c 100644
--- a/core/fpdfapi/parser/cpdf_dictionary.h
+++ b/core/fpdfapi/parser/cpdf_dictionary.h
@@ -52,7 +52,7 @@
   WideString GetUnicodeTextFor(const ByteString& key) const;
   int GetIntegerFor(const ByteString& key) const;
   int GetIntegerFor(const ByteString& key, int default_int) const;
-  bool GetBooleanFor(const ByteString& key, bool bDefault = false) const;
+  bool GetBooleanFor(const ByteString& key, bool bDefault) const;
   float GetNumberFor(const ByteString& key) const;
   const CPDF_Dictionary* GetDictFor(const ByteString& key) const;
   CPDF_Dictionary* GetDictFor(const ByteString& key);
diff --git a/core/fpdfdoc/cpdf_annot.cpp b/core/fpdfdoc/cpdf_annot.cpp
index 432cf8c..89268d4 100644
--- a/core/fpdfdoc/cpdf_annot.cpp
+++ b/core/fpdfdoc/cpdf_annot.cpp
@@ -119,7 +119,8 @@
 void CPDF_Annot::Init() {
   m_nSubtype = StringToAnnotSubtype(m_pAnnotDict->GetStringFor("Subtype"));
   m_bIsTextMarkupAnnotation = IsTextMarkupAnnotation(m_nSubtype);
-  m_bHasGeneratedAP = m_pAnnotDict->GetBooleanFor(kPDFiumKey_HasGeneratedAP);
+  m_bHasGeneratedAP =
+      m_pAnnotDict->GetBooleanFor(kPDFiumKey_HasGeneratedAP, false);
   GenerateAPIfNeeded();
 }
 
diff --git a/core/fpdfdoc/cpdf_annotlist.cpp b/core/fpdfdoc/cpdf_annotlist.cpp
index c6e0f63..f6959fb 100644
--- a/core/fpdfdoc/cpdf_annotlist.cpp
+++ b/core/fpdfdoc/cpdf_annotlist.cpp
@@ -170,7 +170,8 @@
 
   const CPDF_Dictionary* pRoot = m_pDocument->GetRoot();
   const CPDF_Dictionary* pAcroForm = pRoot->GetDictFor("AcroForm");
-  bool bRegenerateAP = pAcroForm && pAcroForm->GetBooleanFor("NeedAppearances");
+  bool bRegenerateAP =
+      pAcroForm && pAcroForm->GetBooleanFor("NeedAppearances", false);
   for (size_t i = 0; i < pAnnots->GetCount(); ++i) {
     CPDF_Dictionary* pDict = ToDictionary(pAnnots->GetDirectObjectAt(i));
     if (!pDict)
diff --git a/core/fpdfdoc/cpdf_iconfit.cpp b/core/fpdfdoc/cpdf_iconfit.cpp
index 5b3deee..bef9eb4 100644
--- a/core/fpdfdoc/cpdf_iconfit.cpp
+++ b/core/fpdfdoc/cpdf_iconfit.cpp
@@ -50,5 +50,5 @@
 }
 
 bool CPDF_IconFit::GetFittingBounds() {
-  return m_pDict ? m_pDict->GetBooleanFor("FB") : false;
+  return m_pDict && m_pDict->GetBooleanFor("FB", false);
 }
diff --git a/core/fpdfdoc/cpdf_interform.cpp b/core/fpdfdoc/cpdf_interform.cpp
index 207dc73..5e9e5e5 100644
--- a/core/fpdfdoc/cpdf_interform.cpp
+++ b/core/fpdfdoc/cpdf_interform.cpp
@@ -577,10 +577,7 @@
 }
 
 CPDF_InterForm::CPDF_InterForm(CPDF_Document* pDocument)
-    : m_pDocument(pDocument),
-      m_pFormDict(nullptr),
-      m_pFieldTree(pdfium::MakeUnique<CFieldTree>()),
-      m_pFormNotify(nullptr) {
+    : m_pDocument(pDocument), m_pFieldTree(pdfium::MakeUnique<CFieldTree>()) {
   CPDF_Dictionary* pRoot = m_pDocument->GetRoot();
   if (!pRoot)
     return;
@@ -742,7 +739,7 @@
 }
 
 bool CPDF_InterForm::NeedConstructAP() const {
-  return m_pFormDict && m_pFormDict->GetBooleanFor("NeedAppearances");
+  return m_pFormDict && m_pFormDict->GetBooleanFor("NeedAppearances", false);
 }
 
 int CPDF_InterForm::CountFieldsInCalculationOrder() {
