return combine(alpha, blue, blue, blue);
return combine(alpha, red, green, blue);
    private int pixelBilinear(double x, double y) {        int fx = (int)Math.floor(x);        int fy = (int)Math.floor(y);                int alpha0 = alpha(pixel(fx,   fy));        int alpha1 = alpha(pixel(fx+1, fy));        int alpha2 = alpha(pixel(fx,   fy+1));        int alpha3 = alpha(pixel(fx+1, fy+1));                // don't bother calculating transparent pixels        if (alpha0 == 0 && alpha1 == 0 && alpha2 == 0 && alpha3 == 0) {            return 0;        }        int blue0 = blue(pixel(fx,   fy));        int blue1 = blue(pixel(fx+1, fy));        int blue2 = blue(pixel(fx,   fy+1));        int blue3 = blue(pixel(fx+1, fy+1));        double xv = x - fx;        double yv = y - fy;        double mul0 = (1.0 - xv) * (1.0 - yv);        double mul1 = xv * (1.0 - yv);        double mul2 = (1.0 - xv) * yv;        double mul3 = xv * yv;                                int alpha = (int)Math.round(mul0*alpha0 + mul1*alpha1 + mul2*alpha2 + mul3*alpha3);        int blue = (int)Math.round(mul0*blue0 + mul1*blue1 + mul2*blue2 + mul3*blue3);                return combine(alpha, blue, blue, blue);    }