diff --git a/fpdfsdk/fpdf_flatten.cpp b/fpdfsdk/fpdf_flatten.cpp
index ea701d9..de39666 100644
--- a/fpdfsdk/fpdf_flatten.cpp
+++ b/fpdfsdk/fpdf_flatten.cpp
@@ -251,7 +251,6 @@
   if (iRet == FLATTEN_NOTHINGTODO || iRet == FLATTEN_FAIL)
     return iRet;
 
-  CFX_FloatRect rcOriginalCB;
   CFX_FloatRect rcMerger = CalculateRect(&RectArray);
   CFX_FloatRect rcOriginalMB =
       pPageDict->GetRectFor(pdfium::page_object::kMediaBox);
@@ -261,20 +260,19 @@
   if (rcOriginalMB.IsEmpty())
     rcOriginalMB = CFX_FloatRect(0.0f, 0.0f, 612.0f, 792.0f);
 
+  CFX_FloatRect rcOriginalCB;
+  if (pPageDict->KeyExist(pdfium::page_object::kCropBox))
+    rcOriginalCB = pPageDict->GetRectFor(pdfium::page_object::kCropBox);
+  if (rcOriginalCB.IsEmpty())
+    rcOriginalCB = rcOriginalMB;
+
   rcMerger.left = std::max(rcMerger.left, rcOriginalMB.left);
   rcMerger.right = std::min(rcMerger.right, rcOriginalMB.right);
   rcMerger.bottom = std::max(rcMerger.bottom, rcOriginalMB.bottom);
   rcMerger.top = std::min(rcMerger.top, rcOriginalMB.top);
-  if (pPageDict->KeyExist("ArtBox"))
-    rcOriginalCB = pPageDict->GetRectFor("ArtBox");
-  else
-    rcOriginalCB = rcOriginalMB;
 
-  if (!rcOriginalMB.IsEmpty())
-    pPageDict->SetRectFor(pdfium::page_object::kMediaBox, rcOriginalMB);
-
-  if (!rcOriginalCB.IsEmpty())
-    pPageDict->SetRectFor("ArtBox", rcOriginalCB);
+  pPageDict->SetRectFor(pdfium::page_object::kMediaBox, rcOriginalMB);
+  pPageDict->SetRectFor(pdfium::page_object::kCropBox, rcOriginalCB);
 
   CPDF_Dictionary* pRes =
       pPageDict->GetDictFor(pdfium::page_object::kResources);
@@ -314,8 +312,7 @@
     pNewOXbjectDic->SetNewFor<CPDF_Name>("Type", "XObject");
     pNewOXbjectDic->SetNewFor<CPDF_Name>("Subtype", "Form");
     pNewOXbjectDic->SetNewFor<CPDF_Number>("FormType", 1);
-    CFX_FloatRect rcBBox = pPageDict->GetRectFor(pdfium::page_object::kArtBox);
-    pNewOXbjectDic->SetRectFor("BBox", rcBBox);
+    pNewOXbjectDic->SetRectFor("BBox", rcOriginalCB);
   }
 
   for (size_t i = 0; i < ObjectArray.size(); ++i) {
diff --git a/fpdfsdk/fpdf_ppo.cpp b/fpdfsdk/fpdf_ppo.cpp
index 8f0b0c3..fd270d9 100644
--- a/fpdfsdk/fpdf_ppo.cpp
+++ b/fpdfsdk/fpdf_ppo.cpp
@@ -185,12 +185,6 @@
   return GetMediaBox(pPageDict);
 }
 
-CFX_FloatRect GetTrimBox(const CPDF_Dictionary* pPageDict) {
-  if (pPageDict->KeyExist("TrimBox"))
-    return pPageDict->GetRectFor("TrimBox");
-  return GetCropBox(pPageDict);
-}
-
 const CPDF_Object* GetPageOrganizerPageContent(
     const CPDF_Dictionary* pPageDict) {
   return pPageDict
@@ -702,7 +696,7 @@
   pNewXObjectDict->SetNewFor<CPDF_Name>("Type", "XObject");
   pNewXObjectDict->SetNewFor<CPDF_Name>("Subtype", "Form");
   pNewXObjectDict->SetNewFor<CPDF_Number>("FormType", 1);
-  pNewXObjectDict->SetRectFor("BBox", GetTrimBox(pSrcPageDict));
+  pNewXObjectDict->SetRectFor("BBox", GetCropBox(pSrcPageDict));
   // TODO(xlou): add matrix field to pNewXObjectDict.
 
   if (const CPDF_Array* pSrcContentArray = ToArray(pSrcContentObj)) {
