diff --git a/include/utils/SkPaintFilterCanvas.h b/include/utils/SkPaintFilterCanvas.h
index d934411..d734af0 100644
--- a/include/utils/SkPaintFilterCanvas.h
+++ b/include/utils/SkPaintFilterCanvas.h
@@ -38,8 +38,6 @@
     }
 
 protected:
-    /** DEPRECATED */
-    virtual bool onFilter(SkTCopyOnFirstWrite<SkPaint>* paint, Type type) const;
     /**
      *  Called with the paint that will be used to draw the specified type.
      *  The implementation may modify the paint as they wish.
@@ -51,7 +49,7 @@
      *        To also filter encapsulated paints (e.g. SkPicture, SkTextBlob), clients may need to
      *        override the relevant methods (i.e. drawPicture, drawTextBlob).
      */
-    virtual bool onFilter(SkPaint& paint) const;
+    virtual bool onFilter(SkPaint& paint) const = 0;
 
     void onDrawPaint(const SkPaint&) override;
     void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override;
diff --git a/src/utils/SkPaintFilterCanvas.cpp b/src/utils/SkPaintFilterCanvas.cpp
index c725c0b..9b9d129 100644
--- a/src/utils/SkPaintFilterCanvas.cpp
+++ b/src/utils/SkPaintFilterCanvas.cpp
@@ -31,20 +31,6 @@
     bool fShouldDraw;
 };
 
-bool SkPaintFilterCanvas::onFilter(SkTCopyOnFirstWrite<SkPaint>* paint, Type type) const {
-    SK_ABORT("Not reached");
-    return false;
-}
-
-bool SkPaintFilterCanvas::onFilter(SkPaint& paint) const {
-    SkTCopyOnFirstWrite<SkPaint> p(paint);
-    bool shouldDraw = this->onFilter(&p, kPicture_Type);
-    if (p.get() != &paint) {
-        paint = *p;
-    }
-    return shouldDraw;
-}
-
 SkPaintFilterCanvas::SkPaintFilterCanvas(SkCanvas *canvas)
     : SkCanvasVirtualEnforcer<SkNWayCanvas>(canvas->imageInfo().width(),
                                               canvas->imageInfo().height()) {
