Index: src/core/SkScan_Antihair.cpp |
diff --git a/src/core/SkScan_Antihair.cpp b/src/core/SkScan_Antihair.cpp |
index beddf6320297a5a5870997955a664a29e9653f22..b14e12bab8c8d3157ae37ec73d3b67ca2e3c2d43 100644 |
--- a/src/core/SkScan_Antihair.cpp |
+++ b/src/core/SkScan_Antihair.cpp |
@@ -847,7 +847,11 @@ static void inner_scanline(FDot8 L, int top, FDot8 R, U8CPU alpha, |
SkASSERT(L < R); |
if ((L >> 8) == ((R - 1) >> 8)) { // 1x1 pixel |
- blitter->blitV(L >> 8, top, 1, InvAlphaMul(alpha, R - L)); |
+ FDot8 widClamp = R - L; |
+ // border case clamp 256 to 255 instead of going through call_hline_blitter |
+ // see skbug/4406 |
+ widClamp = widClamp - (widClamp >> 8); |
+ blitter->blitV(L >> 8, top, 1, InvAlphaMul(alpha, widClamp)); |
return; |
} |