diff --git a/samplecode/SamplePatch.cpp b/samplecode/SamplePatch.cpp
index 54de942..47786bf 100644
--- a/samplecode/SamplePatch.cpp
+++ b/samplecode/SamplePatch.cpp
@@ -21,6 +21,7 @@
 #include "SkColorFilter.h"
 #include "SkTime.h"
 #include "SkTypeface.h"
+#include "SkVertices.h"
 
 #include "SkOSFile.h"
 #include "SkStream.h"
@@ -179,9 +180,10 @@
             s += ds;
         }
         t += dt;
-        canvas->drawVertices(SkCanvas::kTriangleStrip_VertexMode, stripCount,
-                             strip, doTextures ? tex : nullptr,
-                             doColors ? colors : nullptr, nullptr, 0, paint);
+        canvas->drawVertices(SkVertices::MakeCopy(SkVertices::kTriangleStrip_VertexMode, stripCount,
+                                                  strip, doTextures ? tex : nullptr,
+                                                  doColors ? colors : nullptr),
+                             SkBlendMode::kModulate, paint);
     }
 }
 
diff --git a/samplecode/SampleSlides.cpp b/samplecode/SampleSlides.cpp
index 2322c24..b8cf380 100644
--- a/samplecode/SampleSlides.cpp
+++ b/samplecode/SampleSlides.cpp
@@ -13,6 +13,7 @@
 #include "SkGradientShader.h"
 #include "SkLayerRasterizer.h"
 #include "SkPaint.h"
+#include "SkVertices.h"
 #include "SkView.h"
 
 #include "sk_tool_utils.h"
@@ -328,7 +329,7 @@
 
 class Rec {
 public:
-    SkCanvas::VertexMode    fMode;
+    SkVertices::VertexMode  fMode;
     int                     fCount;
     SkPoint*                fVerts;
     SkPoint*                fTexs;
@@ -341,7 +342,7 @@
     int n = 10;
     SkRandom    rand;
 
-    rec->fMode = SkCanvas::kTriangles_VertexMode;
+    rec->fMode = SkVertices::kTriangles_VertexMode;
     rec->fCount = n * 3;
     rec->fVerts = new SkPoint[rec->fCount];
 
@@ -358,7 +359,7 @@
     const SkScalar ty = SkIntToScalar(texHeight);
     const int n = 24;
 
-    rec->fMode = SkCanvas::kTriangleFan_VertexMode;
+    rec->fMode = SkVertices::kTriangleFan_VertexMode;
     rec->fCount = n + 2;
     rec->fVerts = new SkPoint[rec->fCount];
     rec->fTexs  = new SkPoint[rec->fCount];
@@ -388,7 +389,7 @@
     const SkScalar ty = SkIntToScalar(texHeight);
     const int n = 24;
 
-    rec->fMode = SkCanvas::kTriangleStrip_VertexMode;
+    rec->fMode = SkVertices::kTriangleStrip_VertexMode;
     rec->fCount = 2 * (n + 1);
     rec->fVerts = new SkPoint[rec->fCount];
     rec->fTexs  = new SkPoint[rec->fCount];
@@ -433,26 +434,22 @@
     paint.setFilterQuality(kLow_SkFilterQuality);
 
     for (size_t i = 0; i < SK_ARRAY_COUNT(fRecs); i++) {
+        auto verts = SkVertices::MakeCopy(fRecs[i].fMode, fRecs[i].fCount,
+                                          fRecs[i].fVerts, fRecs[i].fTexs, nullptr);
         canvas->save();
 
         paint.setShader(nullptr);
-        canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
-                             fRecs[i].fVerts, fRecs[i].fTexs,
-                             nullptr, nullptr, 0, paint);
+        canvas->drawVertices(verts, SkBlendMode::kModulate, paint);
 
         canvas->translate(SkIntToScalar(210), 0);
 
         paint.setShader(fShader0);
-        canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
-                             fRecs[i].fVerts, fRecs[i].fTexs,
-                             nullptr, nullptr, 0, paint);
+        canvas->drawVertices(verts, SkBlendMode::kModulate, paint);
 
         canvas->translate(SkIntToScalar(210), 0);
 
         paint.setShader(fShader1);
-        canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
-                             fRecs[i].fVerts, fRecs[i].fTexs,
-                             nullptr, nullptr, 0, paint);
+        canvas->drawVertices(verts, SkBlendMode::kModulate, paint);
         canvas->restore();
 
         canvas->translate(0, SkIntToScalar(250));
diff --git a/samplecode/SampleVertices.cpp b/samplecode/SampleVertices.cpp
index d08726c..9d3e601 100644
--- a/samplecode/SampleVertices.cpp
+++ b/samplecode/SampleVertices.cpp
@@ -18,6 +18,7 @@
 #include "SkColorFilter.h"
 #include "SkTime.h"
 #include "SkTypeface.h"
+#include "SkVertices.h"
 
 #include "SkOSFile.h"
 #include "SkStream.h"
@@ -84,26 +85,23 @@
         paint.setFilterQuality(kLow_SkFilterQuality);
 
         for (size_t i = 0; i < SK_ARRAY_COUNT(fRecs); i++) {
+            auto verts = SkVertices::MakeCopy(fRecs[i].fMode, fRecs[i].fCount,
+                                              fRecs[i].fVerts, fRecs[i].fTexs,
+                                              nullptr);
             canvas->save();
 
             paint.setShader(nullptr);
-            canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
-                                 fRecs[i].fVerts, fRecs[i].fTexs,
-                                 nullptr, nullptr, 0, paint);
+            canvas->drawVertices(verts, SkBlendMode::kModulate, paint);
 
             canvas->translate(SkIntToScalar(250), 0);
 
             paint.setShader(fShader0);
-            canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
-                                 fRecs[i].fVerts, fRecs[i].fTexs,
-                                 nullptr, nullptr, 0, paint);
+            canvas->drawVertices(verts, SkBlendMode::kModulate, paint);
 
             canvas->translate(SkIntToScalar(250), 0);
 
             paint.setShader(fShader1);
-            canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
-                                 fRecs[i].fVerts, fRecs[i].fTexs,
-                                 nullptr, nullptr, 0, paint);
+            canvas->drawVertices(verts, SkBlendMode::kModulate, paint);
             canvas->restore();
 
             canvas->translate(0, SkIntToScalar(250));
@@ -123,7 +121,7 @@
 
 private:
     struct Rec {
-        SkCanvas::VertexMode    fMode;
+        SkVertices::VertexMode  fMode;
         int                     fCount;
         SkPoint*                fVerts;
         SkPoint*                fTexs;
@@ -136,7 +134,7 @@
         int n = 10;
         SkRandom    rand;
 
-        rec->fMode = SkCanvas::kTriangles_VertexMode;
+        rec->fMode = SkVertices::kTriangles_VertexMode;
         rec->fCount = n * 3;
         rec->fVerts = new SkPoint[rec->fCount];
 
@@ -153,7 +151,7 @@
         const SkScalar ty = SkIntToScalar(texHeight);
         const int n = 24;
 
-        rec->fMode = SkCanvas::kTriangleFan_VertexMode;
+        rec->fMode = SkVertices::kTriangleFan_VertexMode;
         rec->fCount = n + 2;
         rec->fVerts = new SkPoint[rec->fCount];
         rec->fTexs  = new SkPoint[rec->fCount];
@@ -183,7 +181,7 @@
         const SkScalar ty = SkIntToScalar(texHeight);
         const int n = 24;
 
-        rec->fMode = SkCanvas::kTriangleStrip_VertexMode;
+        rec->fMode = SkVertices::kTriangleStrip_VertexMode;
         rec->fCount = 2 * (n + 1);
         rec->fVerts = new SkPoint[rec->fCount];
         rec->fTexs  = new SkPoint[rec->fCount];
