diff --git a/core/fxcodec/progressive_decoder.cpp b/core/fxcodec/progressive_decoder.cpp
index 7448d67..7a0348e 100644
--- a/core/fxcodec/progressive_decoder.cpp
+++ b/core/fxcodec/progressive_decoder.cpp
@@ -374,7 +374,7 @@
 
 FXCODEC_STATUS ProgressiveDecoder::BmpStartDecode() {
   SetTransMethod();
-  scanline_size_ = FxAlignToBoundary<4>(src_width_ * src_components_count_);
+  scanline_size_ = GetScanlineSize();
   decode_buf_.resize(scanline_size_);
   FXDIB_ResampleOptions options;
   options.bInterpolateBilinear = true;
@@ -442,8 +442,7 @@
 FXCODEC_STATUS ProgressiveDecoder::GifStartDecode() {
   src_format_ = FXCodec_8bppRgb;
   SetTransMethod();
-  int scanline_size = FxAlignToBoundary<4>(src_width_);
-  decode_buf_.resize(scanline_size);
+  decode_buf_.resize(GetScanlineSize());
   FXDIB_ResampleOptions options;
   options.bInterpolateBilinear = true;
   weight_horz_.CalculateWeights(src_width_, 0, src_width_, src_width_, 0,
@@ -533,7 +532,7 @@
       return status_;
     }
   }
-  decode_buf_.resize(FxAlignToBoundary<4>(src_width_ * src_components_count_));
+  decode_buf_.resize(GetScanlineSize());
   FXDIB_ResampleOptions options;
   options.bInterpolateBilinear = true;
   weight_horz_.CalculateWeights(src_width_, 0, src_width_, src_width_, 0,
@@ -635,8 +634,7 @@
   src_components_count_ = 4;
   src_format_ = FXCodec_Argb;
   SetTransMethod();
-  int scanline_size = FxAlignToBoundary<4>(src_width_ * src_components_count_);
-  decode_buf_.resize(scanline_size);
+  decode_buf_.resize(GetScanlineSize());
   status_ = FXCODEC_STATUS::kDecodeToBeContinued;
   return status_;
 }
@@ -1258,4 +1256,15 @@
   }
 }
 
+int ProgressiveDecoder::GetScanlineSize() const {
+  // Can't be called before basic image metadata is decoded.
+  CHECK_NE(src_components_count_, 0);
+  CHECK_NE(src_width_, 0);
+
+  FX_SAFE_INT32 result = src_width_;
+  result *= src_components_count_;
+
+  return FxAlignToBoundary<4>(result).ValueOrDie();
+}
+
 }  // namespace fxcodec
diff --git a/core/fxcodec/progressive_decoder.h b/core/fxcodec/progressive_decoder.h
index f1776c3..994ffac 100644
--- a/core/fxcodec/progressive_decoder.h
+++ b/core/fxcodec/progressive_decoder.h
@@ -180,6 +180,12 @@
                 uint8_t* src_scan,
                 FXCodec_Format src_format);
 
+  // Computes the size of a single decoded image row (in bytes).
+  //
+  // This needs to be called *after* sufficient image metadata has been decoded
+  // (i.e. `src_width_` and `src_components_count_` need to be known).
+  int GetScanlineSize() const;
+
   FXCODEC_STATUS status_ = FXCODEC_STATUS::kDecodeFinished;
   FXCODEC_IMAGE_TYPE image_type_ = FXCODEC_IMAGE_UNKNOWN;
   RetainPtr<IFX_SeekableReadStream> file_;
