diff --git a/DEPS b/DEPS
index 63f64b5..cb6da85 100644
--- a/DEPS
+++ b/DEPS
@@ -130,7 +130,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling pdfium_tests
   # and whatever else without interference from each other.
-  'pdfium_tests_revision': 'b9373ffb65b305827e0ceb85bfaec40dd7122032',
+  'pdfium_tests_revision': '75cce6244b9c04dbe67ce0d7929e0ca0ab7f0ae7',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling skia
   # and whatever else without interference from each other.
diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp
index 90f55c1..5a7a047 100644
--- a/core/fxge/skia/fx_skia_device.cpp
+++ b/core/fxge/skia/fx_skia_device.cpp
@@ -70,6 +70,8 @@
 #endif
 
 #if defined(_SKIA_SUPPORT_)
+#include "core/fxcrt/fx_coordinates.h"
+#include "core/fxge/dib/cstretchengine.h"
 #include "third_party/skia/include/core/SkColorFilter.h"
 #include "third_party/skia/include/core/SkMaskFilter.h"
 #include "third_party/skia/include/core/SkPictureRecorder.h"
@@ -2465,8 +2467,12 @@
 #if defined(_SKIA_SUPPORT_)
   CFX_Matrix m = CFX_RenderDevice::GetFlipMatrix(
       pBitmap->GetWidth(), pBitmap->GetHeight(), left, top);
-  return StartDIBitsSkia(pBitmap, 0xFF, argb, m, FXDIB_ResampleOptions(),
-                         blend_type);
+
+  // `bNoSmoothing` prevents linear sampling when rendering bitmaps.
+  FXDIB_ResampleOptions sampling_options;
+  sampling_options.bNoSmoothing = true;
+
+  return StartDIBitsSkia(pBitmap, 0xFF, argb, m, sampling_options, blend_type);
 #endif
 
 #if defined(_SKIA_SUPPORT_PATHS_)
@@ -2503,8 +2509,12 @@
   SkRect skClipRect = SkRect::MakeLTRB(pClipRect->left, pClipRect->bottom,
                                        pClipRect->right, pClipRect->top);
   m_pCanvas->clipRect(skClipRect, SkClipOp::kIntersect, true);
-  return StartDIBitsSkia(pSource, 0xFF, argb, m, FXDIB_ResampleOptions(),
-                         blend_type);
+
+  // `bNoSmoothing` prevents linear sampling when rendering bitmaps.
+  FXDIB_ResampleOptions sampling_options;
+  sampling_options.bNoSmoothing = true;
+
+  return StartDIBitsSkia(pSource, 0xFF, argb, m, sampling_options, blend_type);
 #endif  // defined(_SKIA_SUPPORT_)
 
 #if defined(_SKIA_SUPPORT_PATHS_)
@@ -2773,10 +2783,18 @@
         }
       }
     } else {
-      SkSamplingOptions sampling_options =
-          options.bInterpolateBilinear
-              ? SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kLinear)
-              : SkSamplingOptions();
+      int dest_width =
+          pdfium::base::checked_cast<int>(ceilf(matrix.GetXUnit()));
+      int dest_height =
+          pdfium::base::checked_cast<int>(ceilf(matrix.GetYUnit()));
+
+      SkSamplingOptions sampling_options;
+      if (options.bInterpolateBilinear ||
+          CStretchEngine::UseInterpolateBilinear(options, dest_width,
+                                                 dest_height, width, height)) {
+        sampling_options =
+            SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kLinear);
+      }
       m_pCanvas->drawImageRect(skBitmap.asImage(),
                                SkRect::MakeWH(width, height), sampling_options,
                                &paint);
diff --git a/testing/SUPPRESSIONS b/testing/SUPPRESSIONS
index d2611da..1378ece 100644
--- a/testing/SUPPRESSIONS
+++ b/testing/SUPPRESSIONS
@@ -71,9 +71,6 @@
 
 FRC_11_8.2.2__T8.3_first_last_exchange.pdf * * * *
 
-# TODO(pdfium:1857): Remove after associated bug is fixed
-FRC_11_8.2.4_View_edit.pdf * * * skia
-
 FRC_12_8.2.2__T8.3_first_outline_obj_ID.pdf * * * *
 FRC_13_8.2.2__T8.3_Count_edit300.pdf * * * *
 FRC_14_8.2.2__T8.3_Count_edit0.pdf * * * *
@@ -121,12 +118,6 @@
 FRC_8.5_Page_C_SubmitForm.pdf * * * *
 FRC_8.5_Page_PI_ResetForm_Phantom.pdf * * * *
 
-# TODO(pdfium:1859): Remove after associated bug is fixed
-FRC_8.5_Screen_Img_D_Launch.pdf * * * skia
-
-# TODO(pdfium:1859): Remove after associated bug is fixed
-FRC_8.5_URI_IsMap.pdf * * * skia
-
 FRC_8.5_Widget_F.pdf * nov8 * *
 FRC_8_8.2.2__T8.3_Count_remove.pdf * * * *
 FRC_9_8.2.2__T8.3_remove_first_item.pdf * * * *
@@ -160,9 +151,6 @@
 app_launchurl.pdf mac * * *
 appstoredescription3.1_en_updated.pdf mac * * *
 
-# TODO(pdfium:1859): Remove after associated bug is fixed
-bi.pdf * * * skia
-
 bookmark.pdf * * * *
 bookmarkgetcolor.pdf mac * * *
 bug_0_length_line.pdf mac * * *
diff --git a/testing/resources/pixel/bug_1015233_expected_skia.pdf.0.png b/testing/resources/pixel/bug_1015233_expected_skia.pdf.0.png
index 5d2041f..1a2a736 100644
--- a/testing/resources/pixel/bug_1015233_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_1015233_expected_skia.pdf.0.png
Binary files differ
