Fix premul alpha problems w/matrix convolution filter, and re-enable the bench.

http://codereview.appspot.com/6541043/



git-svn-id: http://skia.googlecode.com/svn/trunk@5610 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/SkMatrixConvolutionImageFilter.cpp b/src/effects/SkMatrixConvolutionImageFilter.cpp
index 67104f0..e5acf56 100644
--- a/src/effects/SkMatrixConvolutionImageFilter.cpp
+++ b/src/effects/SkMatrixConvolutionImageFilter.cpp
@@ -113,14 +113,11 @@
                     sumB += SkScalarMul(SkIntToScalar(SkGetPackedB32(s)), k);
                 }
             }
-            int a = SkScalarFloorToInt(SkScalarMul(sumA, fGain) + fBias);
-            int r = SkScalarFloorToInt(SkScalarMul(sumR, fGain) + fBias);
-            int g = SkScalarFloorToInt(SkScalarMul(sumG, fGain) + fBias);
-            int b = SkScalarFloorToInt(SkScalarMul(sumB, fGain) + fBias);
-            *dptr++ = SkPackARGB32(SkClampMax(a, 255),
-                                   SkClampMax(r, 255),
-                                   SkClampMax(g, 255),
-                                   SkClampMax(b, 255));
+            int a = SkClampMax(SkScalarFloorToInt(SkScalarMul(sumA, fGain) + fBias), 255);
+            int r = SkClampMax(SkScalarFloorToInt(SkScalarMul(sumR, fGain) + fBias), a);
+            int g = SkClampMax(SkScalarFloorToInt(SkScalarMul(sumG, fGain) + fBias), a);
+            int b = SkClampMax(SkScalarFloorToInt(SkScalarMul(sumB, fGain) + fBias), a);
+            *dptr++ = SkPackARGB32(a, r, g, b);
         }
     }
 }