diff --git a/samplecode/SampleCamera.cpp b/samplecode/SampleCamera.cpp
index c9bb1c9..abde083 100644
--- a/samplecode/SampleCamera.cpp
+++ b/samplecode/SampleCamera.cpp
@@ -38,8 +38,7 @@
                 SkRect dst = { -150, -150, 150, 150 };
                 SkMatrix matrix;
                 matrix.setRectToRect(src, dst, SkMatrix::kFill_ScaleToFit);
-                fShaders.push_back(bm.makeShader(SkSamplingOptions(SkFilterMode::kLinear,
-                                                                   SkMipmapMode::kNone),
+                fShaders.push_back(bm.makeShader(SkSamplingOptions(SkFilterMode::kLinear),
                                                  matrix));
             }
         }
diff --git a/samplecode/SampleFilterBounds.cpp b/samplecode/SampleFilterBounds.cpp
index d9d699d..072bbf3 100644
--- a/samplecode/SampleFilterBounds.cpp
+++ b/samplecode/SampleFilterBounds.cpp
@@ -183,7 +183,7 @@
         blurPaint.setImageFilter(fBlur);
         canvas->saveLayer(&localContentRect, &blurPaint);
         canvas->drawImageRect(fImage.get(), localContentRect, localContentRect,
-                              SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kNone),
+                              SkSamplingOptions(SkFilterMode::kLinear),
                               nullptr, SkCanvas::kFast_SrcRectConstraint);
         canvas->restore();
 
diff --git a/samplecode/SamplePatch.cpp b/samplecode/SamplePatch.cpp
index cca913d..98dde31 100644
--- a/samplecode/SamplePatch.cpp
+++ b/samplecode/SamplePatch.cpp
@@ -34,8 +34,7 @@
     SkBitmap bm;
     decode_file(GetResourceAsData("images/dog.jpg"), &bm);
     *size = SkIPoint{bm.width(), bm.height()};
-    return bm.makeShader(SkSamplingOptions(SkFilterMode::kLinear,
-                                           SkMipmapMode::kNone));
+    return bm.makeShader(SkSamplingOptions(SkFilterMode::kLinear));
 }
 
 static sk_sp<SkShader> make_shader1(const SkIPoint& size) {
diff --git a/samplecode/SampleSlides.cpp b/samplecode/SampleSlides.cpp
index b466c19..a17a674 100644
--- a/samplecode/SampleSlides.cpp
+++ b/samplecode/SampleSlides.cpp
@@ -245,8 +245,7 @@
 
     decode_file("/skimages/logo.gif", &bm);
     size->set(bm.width(), bm.height());
-    return bm.makeShader(SkSamplingOptions(SkFilterMode::kLinear,
-                                           SkMipmapMode::kNone));
+    return bm.makeShader(SkSamplingOptions(SkFilterMode::kLinear));
 }
 
 static sk_sp<SkShader> make_shader1(const SkIPoint& size) {
diff --git a/samplecode/SampleVertices.cpp b/samplecode/SampleVertices.cpp
index d8f8a52..d2c7fea 100644
--- a/samplecode/SampleVertices.cpp
+++ b/samplecode/SampleVertices.cpp
@@ -35,7 +35,7 @@
     pixels[1] = pixels[3] = color1;
 
     return bm.makeShader(SkTileMode::kRepeat, SkTileMode::kRepeat,
-                         SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kNone));
+                         SkSamplingOptions(SkFilterMode::kLinear));
 }
 
 static sk_sp<SkShader> make_shader1(const SkIPoint& size) {
diff --git a/samplecode/SampleXfer.cpp b/samplecode/SampleXfer.cpp
index d183220..40feb3b 100644
--- a/samplecode/SampleXfer.cpp
+++ b/samplecode/SampleXfer.cpp
@@ -218,9 +218,7 @@
             r.offset(r.width() + 10, 0);
             lm.postTranslate(r.width() + 10, 0);
 
-            paint.setShader(fImage->makeShader(SkSamplingOptions{ SkFilterMode::kLinear,
-                                                                  SkMipmapMode::kNone },
-                                               lm));
+            paint.setShader(fImage->makeShader(SkSamplingOptions(SkFilterMode::kLinear), lm));
             canvas->drawRect(r, paint);
 
             r.offset(r.width() + 10, 0);
