Fix bounds computations for SkDisplacementMapEffect with negative scale.

BUG=skia:4835
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1616663003

Review URL: https://codereview.chromium.org/1616663003
diff --git a/gm/displacement.cpp b/gm/displacement.cpp
index bebc276..c5f1837 100644
--- a/gm/displacement.cpp
+++ b/gm/displacement.cpp
@@ -43,7 +43,7 @@
     }
 
     SkISize onISize() override {
-        return SkISize::Make(500, 500);
+        return SkISize::Make(600, 500);
     }
 
     void drawClippedBitmap(SkCanvas* canvas, int x, int y, const SkPaint& paint) const {
@@ -153,6 +153,13 @@
             40.0f, displ, nullptr, &cropRect))->unref();
         drawClippedBitmap(canvas, 400, 300, paint);
 
+        // Test for negative scale.
+        paint.setImageFilter(SkDisplacementMapEffect::Create(
+            SkDisplacementMapEffect::kG_ChannelSelectorType,
+            SkDisplacementMapEffect::kA_ChannelSelectorType,
+            -40.0f, displ))->unref();
+        this->drawClippedBitmap(canvas, 500, 0, paint);
+
         // Tests for images of different sizes
         displ.reset(SkImageSource::Create(fSmall));
         paint.setImageFilter(SkDisplacementMapEffect::Create(