diff --git a/core/fxcodec/gif/cfx_lzwdecompressor.cpp b/core/fxcodec/gif/cfx_lzwdecompressor.cpp
index 35697fe..ccf5c12 100644
--- a/core/fxcodec/gif/cfx_lzwdecompressor.cpp
+++ b/core/fxcodec/gif/cfx_lzwdecompressor.cpp
@@ -13,31 +13,25 @@
 
 #include "core/fxcrt/fx_safe_types.h"
 #include "third_party/base/numerics/safe_math.h"
+#include "third_party/base/ptr_util.h"
 
 std::unique_ptr<CFX_LZWDecompressor> CFX_LZWDecompressor::Create(
     uint8_t color_exp,
     uint8_t code_exp) {
-  // color_exp generates 2^(n + 1) codes, where as the code_exp reserves 2^n.
+  // |color_exp| generates 2^(n + 1) codes, where as the code_exp reserves 2^n.
   // This is a quirk of the GIF spec.
   if (code_exp > GIF_MAX_LZW_EXP || code_exp < color_exp + 1)
     return nullptr;
-  return std::unique_ptr<CFX_LZWDecompressor>(
-      new CFX_LZWDecompressor(color_exp, code_exp));
+
+  // Private ctor.
+  return pdfium::WrapUnique(new CFX_LZWDecompressor(color_exp, code_exp));
 }
 
 CFX_LZWDecompressor::CFX_LZWDecompressor(uint8_t color_exp, uint8_t code_exp)
     : code_size_(code_exp),
-      code_size_cur_(0),
       code_color_end_(static_cast<uint16_t>(1 << (color_exp + 1))),
       code_clear_(static_cast<uint16_t>(1 << code_exp)),
-      code_end_(static_cast<uint16_t>((1 << code_exp) + 1)),
-      code_next_(0),
-      code_first_(0),
-      code_old_(0),
-      next_in_(nullptr),
-      avail_in_(0),
-      bits_left_(0),
-      code_store_(0) {}
+      code_end_(static_cast<uint16_t>((1 << code_exp) + 1)) {}
 
 CFX_LZWDecompressor::~CFX_LZWDecompressor() = default;
 
diff --git a/core/fxcodec/gif/cfx_lzwdecompressor.h b/core/fxcodec/gif/cfx_lzwdecompressor.h
index 60c9388..6c7a2b9 100644
--- a/core/fxcodec/gif/cfx_lzwdecompressor.h
+++ b/core/fxcodec/gif/cfx_lzwdecompressor.h
@@ -40,26 +40,28 @@
   size_t* DecompressedNextForTest() { return &decompressed_next_; }
 
  private:
+  // Use Create() instead.
   CFX_LZWDecompressor(uint8_t color_exp, uint8_t code_exp);
+
   void ClearTable();
   void AddCode(uint16_t prefix_code, uint8_t append_char);
   bool DecodeString(uint16_t code);
   uint32_t ExtractData(uint8_t* dest_buf, uint32_t dest_size);
 
-  uint8_t code_size_;
-  uint8_t code_size_cur_;
-  uint16_t code_color_end_;
-  uint16_t code_clear_;
-  uint16_t code_end_;
-  uint16_t code_next_;
-  uint8_t code_first_;
+  const uint8_t code_size_;
+  uint8_t code_size_cur_ = 0;
+  const uint16_t code_color_end_;
+  const uint16_t code_clear_;
+  const uint16_t code_end_;
+  uint16_t code_next_ = 0;
+  uint8_t code_first_ = 0;
   std::vector<uint8_t, FxAllocAllocator<uint8_t>> decompressed_;
-  size_t decompressed_next_;
-  uint16_t code_old_;
-  const uint8_t* next_in_;
-  uint32_t avail_in_;
-  uint8_t bits_left_;
-  uint32_t code_store_;
+  size_t decompressed_next_ = 0;
+  uint16_t code_old_ = 0;
+  const uint8_t* next_in_ = nullptr;
+  uint32_t avail_in_ = 0;
+  uint8_t bits_left_ = 0;
+  uint32_t code_store_ = 0;
   CodeEntry code_table_[GIF_MAX_LZW_CODE];
 };
 
