diff --git a/effects/SkMergeImageFilter.cpp b/effects/SkMergeImageFilter.cpp
index 0c47c91..0205330 100755
--- a/effects/SkMergeImageFilter.cpp
+++ b/effects/SkMergeImageFilter.cpp
@@ -39,7 +39,8 @@
 }
 
 SkMergeImageFilter::SkMergeImageFilter(SkImageFilter* first, SkImageFilter* second,
-                                       SkXfermode::Mode mode) : INHERITED(first, second) {
+                                       SkXfermode::Mode mode,
+                                       const SkIRect* cropRect) : INHERITED(first, second, cropRect) {
     if (SkXfermode::kSrcOver_Mode != mode) {
         SkXfermode::Mode modes[] = { mode, mode };
         this->initModes(modes);
@@ -49,7 +50,8 @@
 }
 
 SkMergeImageFilter::SkMergeImageFilter(SkImageFilter* filters[], int count,
-                                       const SkXfermode::Mode modes[]) : INHERITED(count, filters) {
+                                       const SkXfermode::Mode modes[],
+                                       const SkIRect* cropRect) : INHERITED(count, filters, cropRect) {
     this->initModes(modes);
 }
 
@@ -99,10 +101,9 @@
         return false;
     }
 
-    const SkIRect srcBounds = SkIRect::MakeXYWH(loc->x(), loc->y(),
-                                                src.width(), src.height());
     SkIRect bounds;
-    if (!this->filterBounds(srcBounds, ctm, &bounds)) {
+    src.getBounds(&bounds);
+    if (!this->applyCropRect(&bounds, ctm)) {
         return false;
     }
 
@@ -120,7 +121,7 @@
     for (int i = 0; i < inputCount; ++i) {
         SkBitmap tmp;
         const SkBitmap* srcPtr;
-        SkIPoint pos = *loc;
+        SkIPoint pos = SkIPoint::Make(0, 0);
         SkImageFilter* filter = getInput(i);
         if (filter) {
             if (!filter->filterImage(proxy, src, ctm, &tmp, &pos)) {
@@ -139,7 +140,8 @@
         canvas.drawSprite(*srcPtr, pos.x() - x0, pos.y() - y0, &paint);
     }
 
-    loc->set(bounds.left(), bounds.top());
+    loc->fX += bounds.left();
+    loc->fY += bounds.top();
     *result = dst->accessBitmap(false);
     return true;
 }
