diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.h b/core/fpdfapi/page/cpdf_streamcontentparser.h
index 4440aab..50eb0eb 100644
--- a/core/fpdfapi/page/cpdf_streamcontentparser.h
+++ b/core/fpdfapi/page/cpdf_streamcontentparser.h
@@ -7,8 +7,8 @@
 #ifndef CORE_FPDFAPI_PAGE_CPDF_STREAMCONTENTPARSER_H_
 #define CORE_FPDFAPI_PAGE_CPDF_STREAMCONTENTPARSER_H_
 
+#include <map>
 #include <memory>
-#include <unordered_map>
 #include <vector>
 
 #include "core/fpdfapi/page/cpdf_contentmark.h"
@@ -73,8 +73,7 @@
 
   static const int kParamBufSize = 16;
 
-  using OpCodes =
-      std::unordered_map<uint32_t, void (CPDF_StreamContentParser::*)()>;
+  using OpCodes = std::map<uint32_t, void (CPDF_StreamContentParser::*)()>;
   static OpCodes InitializeOpCodes();
 
   void AddNameParam(const CFX_ByteStringC& str);
diff --git a/core/fpdfdoc/cpdf_occontext.h b/core/fpdfdoc/cpdf_occontext.h
index ecdcfae..753aa5c 100644
--- a/core/fpdfdoc/cpdf_occontext.h
+++ b/core/fpdfdoc/cpdf_occontext.h
@@ -7,7 +7,7 @@
 #ifndef CORE_FPDFDOC_CPDF_OCCONTEXT_H_
 #define CORE_FPDFDOC_CPDF_OCCONTEXT_H_
 
-#include <unordered_map>
+#include <map>
 
 #include "core/fxcrt/cfx_retain_ptr.h"
 #include "core/fxcrt/fx_string.h"
@@ -40,7 +40,7 @@
 
   CPDF_Document* const m_pDocument;
   const UsageType m_eUsageType;
-  std::unordered_map<const CPDF_Dictionary*, bool> m_OCGStates;
+  std::map<const CPDF_Dictionary*, bool> m_OCGStates;
 };
 
 #endif  // CORE_FPDFDOC_CPDF_OCCONTEXT_H_
diff --git a/fpdfsdk/javascript/app.h b/fpdfsdk/javascript/app.h
index 9e11b82..0a2cfdb 100644
--- a/fpdfsdk/javascript/app.h
+++ b/fpdfsdk/javascript/app.h
@@ -8,7 +8,7 @@
 #define FPDFSDK_JAVASCRIPT_APP_H_
 
 #include <memory>
-#include <unordered_set>
+#include <set>
 #include <vector>
 
 #include "fpdfsdk/javascript/JS_Define.h"
@@ -172,7 +172,7 @@
 
   bool m_bCalculate;
   bool m_bRuntimeHighLight;
-  std::unordered_set<std::unique_ptr<GlobalTimer>> m_Timers;
+  std::set<std::unique_ptr<GlobalTimer>> m_Timers;
 };
 
 class CJS_App : public CJS_Object {
diff --git a/samples/image_diff.cc b/samples/image_diff.cc
index 3aa626b..70c74c9 100644
--- a/samples/image_diff.cc
+++ b/samples/image_diff.cc
@@ -166,9 +166,6 @@
   return CalculateDifferencePercentage(actual, pixels_different);
 }
 
-// FIXME: Replace with unordered_map when available.
-typedef std::map<uint32_t, int32_t> RgbaToCountMap;
-
 float HistogramPercentageDifferent(const Image& baseline, const Image& actual) {
   // TODO(johnme): Consider using a joint histogram instead, as described in
   // "Comparing Images Using Joint Histograms" by Pass & Zabih
@@ -178,7 +175,7 @@
   int h = std::min(baseline.h(), actual.h());
 
   // Count occurences of each RGBA pixel value of baseline in the overlap.
-  RgbaToCountMap baseline_histogram;
+  std::map<uint32_t, int32_t> baseline_histogram;
   for (int y = 0; y < h; ++y) {
     for (int x = 0; x < w; ++x) {
       // hash_map operator[] inserts a 0 (default constructor) if key not found.
@@ -191,7 +188,7 @@
   for (int y = 0; y < h; ++y) {
     for (int x = 0; x < w; ++x) {
       uint32_t actual_rgba = actual.pixel_at(x, y);
-      RgbaToCountMap::iterator it = baseline_histogram.find(actual_rgba);
+      auto it = baseline_histogram.find(actual_rgba);
       if (it != baseline_histogram.end() && it->second > 0)
         --it->second;
       else
diff --git a/xfa/fde/css/cfde_cssstylesheet.h b/xfa/fde/css/cfde_cssstylesheet.h
index fa73460..24bebdd 100644
--- a/xfa/fde/css/cfde_cssstylesheet.h
+++ b/xfa/fde/css/cfde_cssstylesheet.h
@@ -7,8 +7,8 @@
 #ifndef XFA_FDE_CSS_CFDE_CSSSTYLESHEET_H_
 #define XFA_FDE_CSS_CFDE_CSSSTYLESHEET_H_
 
+#include <map>
 #include <memory>
-#include <unordered_map>
 #include <vector>
 
 #include "core/fxcrt/fx_string.h"
@@ -34,7 +34,7 @@
   void SkipRuleSet(CFDE_CSSSyntaxParser* pSyntax);
 
   std::vector<std::unique_ptr<CFDE_CSSStyleRule>> m_RuleArray;
-  std::unordered_map<uint32_t, wchar_t*> m_StringCache;
+  std::map<uint32_t, wchar_t*> m_StringCache;
 };
 
 #endif  // XFA_FDE_CSS_CFDE_CSSSTYLESHEET_H_
diff --git a/xfa/fwl/cfwl_notedriver.h b/xfa/fwl/cfwl_notedriver.h
index 2ea3f97..b55e701 100644
--- a/xfa/fwl/cfwl_notedriver.h
+++ b/xfa/fwl/cfwl_notedriver.h
@@ -8,8 +8,8 @@
 #define XFA_FWL_CFWL_NOTEDRIVER_H_
 
 #include <deque>
+#include <map>
 #include <memory>
-#include <unordered_map>
 #include <vector>
 
 #include "xfa/fwl/cfwl_event.h"
@@ -69,8 +69,7 @@
   std::vector<CFWL_Widget*> m_Forms;
   std::deque<std::unique_ptr<CFWL_Message>> m_NoteQueue;
   std::vector<CFWL_NoteLoop*> m_NoteLoopQueue;
-  std::unordered_map<uint32_t, std::unique_ptr<CFWL_EventTarget>>
-      m_eventTargets;
+  std::map<uint32_t, std::unique_ptr<CFWL_EventTarget>> m_eventTargets;
   CFWL_Widget* m_pHover;
   CFWL_Widget* m_pFocus;
   CFWL_Widget* m_pGrab;
diff --git a/xfa/fxfa/parser/cxfa_document.cpp b/xfa/fxfa/parser/cxfa_document.cpp
index 4b0a398..a1180e7 100644
--- a/xfa/fxfa/parser/cxfa_document.cpp
+++ b/xfa/fxfa/parser/cxfa_document.cpp
@@ -345,7 +345,7 @@
     return;
 
   std::map<uint32_t, CXFA_Node*> mIDMap;
-  std::unordered_set<CXFA_Node*> sUseNodes;
+  std::set<CXFA_Node*> sUseNodes;
   CXFA_NodeIterator sIterator(pTemplateRoot);
   for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode;
        pNode = sIterator.MoveToNext()) {
diff --git a/xfa/fxfa/parser/cxfa_document.h b/xfa/fxfa/parser/cxfa_document.h
index 03586b6..8491feb 100644
--- a/xfa/fxfa/parser/cxfa_document.h
+++ b/xfa/fxfa/parser/cxfa_document.h
@@ -9,7 +9,7 @@
 
 #include <map>
 #include <memory>
-#include <unordered_set>
+#include <set>
 #include <vector>
 
 #include "xfa/fxfa/fxfa.h"
@@ -120,7 +120,7 @@
   std::unique_ptr<CScript_LogPseudoModel> m_pScriptLog;
   std::unique_ptr<CScript_LayoutPseudoModel> m_pScriptLayout;
   std::unique_ptr<CScript_SignaturePseudoModel> m_pScriptSignature;
-  std::unordered_set<CXFA_Node*> m_PurgeNodes;
+  std::set<CXFA_Node*> m_PurgeNodes;
   XFA_VERSION m_eCurVersionMode;
   uint32_t m_dwDocFlags;
 };
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 73fc88d..9fae4a4 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -8,7 +8,7 @@
 
 #include <map>
 #include <memory>
-#include <unordered_set>
+#include <set>
 #include <utility>
 #include <vector>
 
@@ -90,7 +90,7 @@
 }
 
 std::vector<CXFA_Node*> NodesSortedByDocumentIdx(
-    const std::unordered_set<CXFA_Node*>& rgNodeSet) {
+    const std::set<CXFA_Node*>& rgNodeSet) {
   if (rgNodeSet.empty())
     return std::vector<CXFA_Node*>();
 
@@ -105,8 +105,7 @@
   return rgNodeArray;
 }
 
-using CXFA_NodeSetPair =
-    std::pair<std::unordered_set<CXFA_Node*>, std::unordered_set<CXFA_Node*>>;
+using CXFA_NodeSetPair = std::pair<std::set<CXFA_Node*>, std::set<CXFA_Node*>>;
 using CXFA_NodeSetPairMap =
     std::map<uint32_t, std::unique_ptr<CXFA_NodeSetPair>>;
 using CXFA_NodeSetPairMapMap =
@@ -129,8 +128,8 @@
   return (*pNodeSetPairMap)[dwNameHash].get();
 }
 
-void ReorderDataNodes(const std::unordered_set<CXFA_Node*>& sSet1,
-                      const std::unordered_set<CXFA_Node*>& sSet2,
+void ReorderDataNodes(const std::set<CXFA_Node*>& sSet1,
+                      const std::set<CXFA_Node*>& sSet2,
                       bool bInsertBefore) {
   CXFA_NodeSetPairMapMap rgMap;
   for (CXFA_Node* pNode : sSet1) {
@@ -231,8 +230,8 @@
     pInstMgrNode->GetNodeItem(XFA_NODEITEM_Parent)
         ->InsertChild(pNewInstance, pNextSibling);
     if (bMoveDataBindingNodes) {
-      std::unordered_set<CXFA_Node*> sNew;
-      std::unordered_set<CXFA_Node*> sAfter;
+      std::set<CXFA_Node*> sNew;
+      std::set<CXFA_Node*> sAfter;
       CXFA_NodeIteratorTemplate<CXFA_Node,
                                 CXFA_TraverseStrategy_XFAContainerNode>
           sIteratorNew(pNewInstance);
@@ -262,8 +261,8 @@
     pInstMgrNode->GetNodeItem(XFA_NODEITEM_Parent)
         ->InsertChild(pNewInstance, pBeforeInstance);
     if (bMoveDataBindingNodes) {
-      std::unordered_set<CXFA_Node*> sNew;
-      std::unordered_set<CXFA_Node*> sBefore;
+      std::set<CXFA_Node*> sNew;
+      std::set<CXFA_Node*> sBefore;
       CXFA_NodeIteratorTemplate<CXFA_Node,
                                 CXFA_TraverseStrategy_XFAContainerNode>
           sIteratorNew(pNewInstance);
