diff --git a/gn/effects_imagefilters.gni b/gn/effects_imagefilters.gni
index 223dc34..8efe7b8 100644
--- a/gn/effects_imagefilters.gni
+++ b/gn/effects_imagefilters.gni
@@ -27,7 +27,6 @@
   "$_src/effects/imagefilters/SkMorphologyImageFilter.cpp",
   "$_src/effects/imagefilters/SkOffsetImageFilter.cpp",
   "$_src/effects/imagefilters/SkPictureImageFilter.cpp",
-  "$_src/effects/imagefilters/SkPictureImageFilter.h",
   "$_src/effects/imagefilters/SkShaderImageFilter.cpp",
   "$_src/effects/imagefilters/SkTileImageFilter.cpp",
   "$_src/effects/imagefilters/SkTileImageFilter.h",
diff --git a/src/core/SkImageFilter_Base.h b/src/core/SkImageFilter_Base.h
index ca74e63..20ecca9 100644
--- a/src/core/SkImageFilter_Base.h
+++ b/src/core/SkImageFilter_Base.h
@@ -498,6 +498,7 @@
 void SkRegisterMergeImageFilterFlattenable();
 void SkRegisterMorphologyImageFilterFlattenables();
 void SkRegisterOffsetImageFilterFlattenable();
+void SkRegisterPictureImageFilterFlattenable();
 void SkRegisterShaderImageFilterFlattenable();
 
 #endif // SkImageFilter_Base_DEFINED
diff --git a/src/effects/imagefilters/SkImageFilters.cpp b/src/effects/imagefilters/SkImageFilters.cpp
index e078251..b06ae60 100644
--- a/src/effects/imagefilters/SkImageFilters.cpp
+++ b/src/effects/imagefilters/SkImageFilters.cpp
@@ -9,7 +9,6 @@
 
 #include "include/core/SkPaint.h"
 
-#include "src/effects/imagefilters/SkPictureImageFilter.h"
 #include "src/effects/imagefilters/SkTileImageFilter.h"
 
 // TODO (michaelludwig) - Once SkCanvas can draw the results of a filter with any transform, this
@@ -17,7 +16,6 @@
 #include "src/core/SkMatrixImageFilter.h"
 
 void SkImageFilters::RegisterFlattenables() {
-    SkPictureImageFilter::RegisterFlattenables();
     SkTileImageFilter::RegisterFlattenables();
 }
 
@@ -37,10 +35,6 @@
 }
 #endif
 
-sk_sp<SkImageFilter> SkImageFilters::Picture(sk_sp<SkPicture> pic, const SkRect& targetRect) {
-    return SkPictureImageFilter::Make(std::move(pic), targetRect);
-}
-
 sk_sp<SkImageFilter> SkImageFilters::Tile(
         const SkRect& src, const SkRect& dst, sk_sp<SkImageFilter> input) {
     return SkTileImageFilter::Make(src, dst, std::move(input));
diff --git a/src/effects/imagefilters/SkPictureImageFilter.cpp b/src/effects/imagefilters/SkPictureImageFilter.cpp
index e908e9c..3245b4b 100644
--- a/src/effects/imagefilters/SkPictureImageFilter.cpp
+++ b/src/effects/imagefilters/SkPictureImageFilter.cpp
@@ -5,10 +5,9 @@
  * found in the LICENSE file.
  */
 
-#include "src/effects/imagefilters/SkPictureImageFilter.h"
-
 #include "include/core/SkCanvas.h"
 #include "include/core/SkPicture.h"
+#include "include/effects/SkImageFilters.h"
 #include "src/core/SkImageFilter_Base.h"
 #include "src/core/SkPicturePriv.h"
 #include "src/core/SkReadBuffer.h"
@@ -19,9 +18,9 @@
 
 namespace {
 
-class SkPictureImageFilterImpl final : public SkImageFilter_Base {
+class SkPictureImageFilter final : public SkImageFilter_Base {
 public:
-    SkPictureImageFilterImpl(sk_sp<SkPicture> picture, const SkRect& cropRect)
+    SkPictureImageFilter(sk_sp<SkPicture> picture, const SkRect& cropRect)
             : INHERITED(nullptr, 0, nullptr)
             , fPicture(std::move(picture))
             , fCropRect(cropRect) {}
@@ -41,8 +40,8 @@
                                MapDirection, const SkIRect* inputRect) const override;
 
 private:
-    friend void SkPictureImageFilter::RegisterFlattenables();
-    SK_FLATTENABLE_HOOKS(SkPictureImageFilterImpl)
+    friend void ::SkRegisterPictureImageFilterFlattenable();
+    SK_FLATTENABLE_HOOKS(SkPictureImageFilter)
 
     sk_sp<SkPicture>    fPicture;
     SkRect              fCropRect;
@@ -52,24 +51,17 @@
 
 } // end namespace
 
-sk_sp<SkImageFilter> SkPictureImageFilter::Make(sk_sp<SkPicture> picture) {
-    SkRect cropRect = picture ? picture->cullRect() : SkRect::MakeEmpty();
-    return Make(std::move(picture), cropRect);
+sk_sp<SkImageFilter> SkImageFilters::Picture(sk_sp<SkPicture> pic, const SkRect& targetRect) {
+    return sk_sp<SkImageFilter>(new SkPictureImageFilter(std::move(pic), targetRect));
 }
 
-sk_sp<SkImageFilter> SkPictureImageFilter::Make(sk_sp<SkPicture> picture, const SkRect& cropRect) {
-    return sk_sp<SkImageFilter>(new SkPictureImageFilterImpl(std::move(picture), cropRect));
-}
-
-void SkPictureImageFilter::RegisterFlattenables() {
-    SK_REGISTER_FLATTENABLE(SkPictureImageFilterImpl);
+void SkRegisterPictureImageFilterFlattenable() {
+    SK_REGISTER_FLATTENABLE(SkPictureImageFilter);
     // TODO (michaelludwig) - Remove after grace period for SKPs to stop using old name
-    SkFlattenable::Register("SkPictureImageFilter", SkPictureImageFilterImpl::CreateProc);
+    SkFlattenable::Register("SkPictureImageFilterImpl", SkPictureImageFilter::CreateProc);
 }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-sk_sp<SkFlattenable> SkPictureImageFilterImpl::CreateProc(SkReadBuffer& buffer) {
+sk_sp<SkFlattenable> SkPictureImageFilter::CreateProc(SkReadBuffer& buffer) {
     sk_sp<SkPicture> picture;
     SkRect cropRect;
 
@@ -78,10 +70,10 @@
     }
     buffer.readRect(&cropRect);
 
-    return SkPictureImageFilter::Make(std::move(picture), cropRect);
+    return SkImageFilters::Picture(std::move(picture), cropRect);
 }
 
-void SkPictureImageFilterImpl::flatten(SkWriteBuffer& buffer) const {
+void SkPictureImageFilter::flatten(SkWriteBuffer& buffer) const {
     bool hasPicture = (fPicture != nullptr);
     buffer.writeBool(hasPicture);
     if (hasPicture) {
@@ -90,8 +82,10 @@
     buffer.writeRect(fCropRect);
 }
 
-sk_sp<SkSpecialImage> SkPictureImageFilterImpl::onFilterImage(const Context& ctx,
-                                                              SkIPoint* offset) const {
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+sk_sp<SkSpecialImage> SkPictureImageFilter::onFilterImage(const Context& ctx,
+                                                          SkIPoint* offset) const {
     if (!fPicture) {
         return nullptr;
     }
@@ -128,13 +122,13 @@
     return surf->makeImageSnapshot();
 }
 
-SkRect SkPictureImageFilterImpl::computeFastBounds(const SkRect& src) const {
+SkRect SkPictureImageFilter::computeFastBounds(const SkRect& src) const {
     return fCropRect;
 }
 
-SkIRect SkPictureImageFilterImpl::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm,
-                                                     MapDirection direction,
-                                                     const SkIRect* inputRect) const {
+SkIRect SkPictureImageFilter::onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm,
+                                                 MapDirection direction,
+                                                 const SkIRect* inputRect) const {
     if (kReverse_MapDirection == direction) {
         return INHERITED::onFilterNodeBounds(src, ctm, direction, inputRect);
     }
diff --git a/src/effects/imagefilters/SkPictureImageFilter.h b/src/effects/imagefilters/SkPictureImageFilter.h
deleted file mode 100644
index 9ceaabc..0000000
--- a/src/effects/imagefilters/SkPictureImageFilter.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2013 The Android Open Source Project
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef SkPictureImageFilter_DEFINED
-#define SkPictureImageFilter_DEFINED
-
-#include "include/core/SkImageFilter.h"
-
-class SkPicture;
-
-// DEPRECATED: Use include/effects/SkImageFilters::Picture
-class SK_API SkPictureImageFilter {
-public:
-    /**
-     *  Refs the passed-in picture.
-     */
-    static sk_sp<SkImageFilter> Make(sk_sp<SkPicture> picture);
-
-    /**
-     *  Refs the passed-in picture. cropRect can be used to crop or expand the destination rect when
-     *  the picture is drawn. (No scaling is implied by the dest rect; only the CTM is applied.)
-     */
-    static sk_sp<SkImageFilter> Make(sk_sp<SkPicture> picture, const SkRect& cropRect);
-
-    static void RegisterFlattenables();
-
-private:
-    SkPictureImageFilter() = delete;
-};
-
-#endif
diff --git a/src/ports/SkGlobalInitialization_default.cpp b/src/ports/SkGlobalInitialization_default.cpp
index 7b4a697..777d1a9 100644
--- a/src/ports/SkGlobalInitialization_default.cpp
+++ b/src/ports/SkGlobalInitialization_default.cpp
@@ -131,6 +131,7 @@
         SkRegisterMergeImageFilterFlattenable();
         SkRegisterMorphologyImageFilterFlattenables();
         SkRegisterOffsetImageFilterFlattenable();
+        SkRegisterPictureImageFilterFlattenable();
         SkRegisterShaderImageFilterFlattenable();
         SK_REGISTER_FLATTENABLE(SkLocalMatrixImageFilter);
         SK_REGISTER_FLATTENABLE(SkMatrixImageFilter);
