--- hplip-3.11.3a/prnt/hpcups/HPCupsFilter.cpp.bak 2011-05-15 11:31:59.535092724 +0200 +++ hplip-3.11.3a/prnt/hpcups/HPCupsFilter.cpp 2011-05-15 11:34:39.450480869 +0200 @@ -683,10 +683,18 @@ if (b != 0 && b != 0xFF) { #ifdef __linux - rgb[0] -= (255 - b); - rgb[1] -= (255 - b); - rgb[2] -= (255 - b); - + // rgb[0] -= (255 - b); + // rgb[1] -= (255 - b); + // rgb[2] -= (255 - b); + int cr,cg,cb; + cr = rgb[0] - (int)(255 - b); + rgb[0] = cr >= 0 ? cr : 0; + + cg = rgb[1] - (int)(255 - b); + rgb[1] = cg >= 0 ? cg : 0; + + cb = rgb[2] - (int)(255 - b); + rgb[2] = cb >= 0 ? cb : 0; #else // This alternate path is for Mac.... rgb[0] &= b;