diff --git a/core/fpdfapi/page/cpdf_textstate.cpp b/core/fpdfapi/page/cpdf_textstate.cpp
index 37ac332..146202e 100644
--- a/core/fpdfapi/page/cpdf_textstate.cpp
+++ b/core/fpdfapi/page/cpdf_textstate.cpp
@@ -101,13 +101,9 @@
       m_FontSize(that.m_FontSize),
       m_CharSpace(that.m_CharSpace),
       m_WordSpace(that.m_WordSpace),
-      m_TextMode(that.m_TextMode) {
-  for (int i = 0; i < 4; ++i)
-    m_Matrix[i] = that.m_Matrix[i];
-
-  for (int i = 0; i < 4; ++i)
-    m_CTM[i] = that.m_CTM[i];
-
+      m_TextMode(that.m_TextMode),
+      m_Matrix(that.m_Matrix),
+      m_CTM(that.m_CTM) {
   if (m_pDocument && m_pFont) {
     auto* pPageData = CPDF_DocPageData::FromDocument(m_pDocument);
     m_pFont = pPageData->GetFont(m_pFont->GetMutableFontDict());
diff --git a/core/fxge/dib/cfx_imagetransformer.cpp b/core/fxge/dib/cfx_imagetransformer.cpp
index 5328de8..b157dab 100644
--- a/core/fxge/dib/cfx_imagetransformer.cpp
+++ b/core/fxge/dib/cfx_imagetransformer.cpp
@@ -8,6 +8,7 @@
 
 #include <math.h>
 
+#include <array>
 #include <iterator>
 #include <memory>
 #include <utility>
@@ -17,6 +18,7 @@
 #include "core/fxcrt/fx_system.h"
 #include "core/fxcrt/notreached.h"
 #include "core/fxcrt/numerics/safe_conversions.h"
+#include "core/fxcrt/span_util.h"
 #include "core/fxge/dib/cfx_dibitmap.h"
 #include "core/fxge/dib/cfx_imagestretcher.h"
 #include "core/fxge/dib/fx_dib.h"
@@ -277,16 +279,14 @@
 }
 
 void CFX_ImageTransformer::CalcMono(const CalcData& calc_data) {
-  uint32_t argb[256];
+  std::array<uint32_t, 256> argb;
   if (m_Storer.GetBitmap()->HasPalette()) {
     pdfium::span<const uint32_t> palette =
         m_Storer.GetBitmap()->GetPaletteSpan();
-    for (size_t i = 0; i < std::size(argb); i++)
-      argb[i] = palette[i];
+    fxcrt::spancpy(pdfium::make_span(argb), palette.first(argb.size()));
   } else {
-    for (size_t i = 0; i < std::size(argb); i++) {
-      uint32_t v = static_cast<uint32_t>(i);
-      argb[i] = ArgbEncode(0xff, v, v, v);
+    for (uint32_t i = 0; i < argb.size(); ++i) {
+      argb[i] = ArgbEncode(0xff, i, i, i);
     }
   }
   int destBpp = calc_data.bitmap->GetBPP() / 8;
diff --git a/core/fxge/dib/cfx_scanlinecompositor.cpp b/core/fxge/dib/cfx_scanlinecompositor.cpp
index 7aef96a..50e3da5 100644
--- a/core/fxge/dib/cfx_scanlinecompositor.cpp
+++ b/core/fxge/dib/cfx_scanlinecompositor.cpp
@@ -13,6 +13,7 @@
 #include "core/fxcrt/check.h"
 #include "core/fxcrt/check_op.h"
 #include "core/fxcrt/compiler_specific.h"
+#include "core/fxcrt/span_util.h"
 #include "core/fxge/dib/blend.h"
 #include "core/fxge/dib/fx_dib.h"
 
@@ -2152,8 +2153,7 @@
       return;
     }
     pdfium::span<uint32_t> pPalette = m_SrcPalette.Make32BitPalette(pal_count);
-    for (size_t i = 0; i < pal_count; ++i)
-      pPalette[i] = src_palette[i];
+    fxcrt::spancpy(pPalette, src_palette.first(pal_count));
     return;
   }
   if (bIsDestBpp8) {
diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp
index 195c368..3535a4e 100644
--- a/fpdfsdk/fpdf_view.cpp
+++ b/fpdfsdk/fpdf_view.cpp
@@ -1341,8 +1341,8 @@
   const unsigned long trailer_ends_len =
       fxcrt::CollectionSize<unsigned long>(trailer_ends);
   if (buffer && length >= trailer_ends_len) {
-    for (size_t i = 0; i < trailer_ends_len; ++i)
-      buffer[i] = trailer_ends[i];
+    fxcrt::spancpy(pdfium::make_span(buffer, length),
+                   pdfium::make_span(trailer_ends));
   }
 
   return trailer_ends_len;
