| Index: src/effects/SkDisplacementMapEffect.cpp
 | 
| diff --git a/src/effects/SkDisplacementMapEffect.cpp b/src/effects/SkDisplacementMapEffect.cpp
 | 
| index ec306cca3ba0097ca9f80bb23eecf26bb6c659a1..2f95474a76b2d0a70f097432b3c65d223ffdf5fc 100644
 | 
| --- a/src/effects/SkDisplacementMapEffect.cpp
 | 
| +++ b/src/effects/SkDisplacementMapEffect.cpp
 | 
| @@ -228,7 +228,9 @@ bool SkDisplacementMapEffect::onFilterImage(Proxy* proxy,
 | 
|      SkIRect bounds;
 | 
|      // Since computeDisplacement does bounds checking on color pixel access, we don't need to pad
 | 
|      // the color bitmap to bounds here.
 | 
| -    if (!this->applyCropRect(ctx, color, colorOffset, &bounds)) {
 | 
| +    SkIRect srcBounds = color.bounds();
 | 
| +    srcBounds.offset(colorOffset);
 | 
| +    if (!this->applyCropRect(ctx, srcBounds, &bounds)) {
 | 
|          return false;
 | 
|      }
 | 
|      SkIRect displBounds;
 | 
| @@ -396,10 +398,12 @@ bool SkDisplacementMapEffect::filterImageGPU(Proxy* proxy, const SkBitmap& src,
 | 
|      if (!this->filterInputGPU(0, proxy, src, ctx, &displacementBM, &displacementOffset)) {
 | 
|          return false;
 | 
|      }
 | 
| +    SkIRect srcBounds = colorBM.bounds();
 | 
| +    srcBounds.offset(colorOffset);
 | 
|      SkIRect bounds;
 | 
|      // Since GrDisplacementMapEffect does bounds checking on color pixel access, we don't need to
 | 
|      // pad the color bitmap to bounds here.
 | 
| -    if (!this->applyCropRect(ctx, colorBM, colorOffset, &bounds)) {
 | 
| +    if (!this->applyCropRect(ctx, srcBounds, &bounds)) {
 | 
|          return false;
 | 
|      }
 | 
|      SkIRect displBounds;
 | 
| 
 |