diff --git a/core/fxge/cfx_gemodule.h b/core/fxge/cfx_gemodule.h
index e51ddde..429f7d9 100644
--- a/core/fxge/cfx_gemodule.h
+++ b/core/fxge/cfx_gemodule.h
@@ -24,8 +24,6 @@
   void Init(const char** pUserFontPaths);
   CFX_FontCache* GetFontCache();
   CFX_FontMgr* GetFontMgr() { return m_pFontMgr.get(); }
-  void SetTextGamma(float gammaValue);
-  const uint8_t* GetTextGammaTable() const;
 
   CCodec_ModuleMgr* GetCodecModule() { return m_pCodecModule.get(); }
   void* GetPlatformData() { return m_pPlatformData; }
@@ -37,7 +35,6 @@
   void InitPlatform();
   void DestroyPlatform();
 
-  uint8_t m_GammaValue[256];
   std::unique_ptr<CFX_FontCache> m_pFontCache;
   std::unique_ptr<CFX_FontMgr> m_pFontMgr;
   std::unique_ptr<CCodec_ModuleMgr> m_pCodecModule;
diff --git a/core/fxge/ge/cfx_facecache.cpp b/core/fxge/ge/cfx_facecache.cpp
index 5ad7bdd..6d5e3d4 100644
--- a/core/fxge/ge/cfx_facecache.cpp
+++ b/core/fxge/ge/cfx_facecache.cpp
@@ -35,15 +35,6 @@
 
 constexpr uint32_t kInvalidGlyphIndex = static_cast<uint32_t>(-1);
 
-void GammaAdjust(uint8_t* pData,
-                 int nHeight,
-                 int src_pitch,
-                 const uint8_t* gammaTable) {
-  int count = nHeight * src_pitch;
-  for (int i = 0; i < count; i++)
-    pData[i] = gammaTable[pData[i]];
-}
-
 void ContrastAdjust(uint8_t* pDataIn,
                     uint8_t* pDataOut,
                     int nWidth,
@@ -227,8 +218,6 @@
     } else {
       ContrastAdjust(pSrcBuf, pDestBuf, bmwidth, bmheight, src_pitch,
                      dest_pitch);
-      GammaAdjust(pDestBuf, bmheight, dest_pitch,
-                  CFX_GEModule::Get()->GetTextGammaTable());
     }
   }
   return pGlyphBitmap;
diff --git a/core/fxge/ge/cfx_gemodule.cpp b/core/fxge/ge/cfx_gemodule.cpp
index 2cd1e31..d7ae098 100644
--- a/core/fxge/ge/cfx_gemodule.cpp
+++ b/core/fxge/ge/cfx_gemodule.cpp
@@ -47,7 +47,6 @@
   ASSERT(g_pGEModule);
   m_pUserFontPaths = userFontPaths;
   InitPlatform();
-  SetTextGamma(2.2f);
 }
 
 CFX_FontCache* CFX_GEModule::GetFontCache() {
@@ -55,15 +54,3 @@
     m_pFontCache = pdfium::MakeUnique<CFX_FontCache>();
   return m_pFontCache.get();
 }
-
-void CFX_GEModule::SetTextGamma(float gammaValue) {
-  gammaValue /= 2.2f;
-  for (int i = 0; i < 256; ++i) {
-    m_GammaValue[i] = static_cast<uint8_t>(
-        FXSYS_pow(static_cast<float>(i) / 255, gammaValue) * 255.0f + 0.5f);
-  }
-}
-
-const uint8_t* CFX_GEModule::GetTextGammaTable() const {
-  return m_GammaValue;
-}
