private final int blend_fill(int p1) {
      int a2 = fillAi;
      int a1 = a2 ^ 0xff;

      int r = (a1 * ((p1 >> 16) & 0xff)) + (a2 * fillRi) & 0xff00;
      int g = (a1 * ((p1 >>  8) & 0xff)) + (a2 * fillGi) & 0xff00;
      int b = (a1 * ( p1        & 0xff)) + (a2 * fillBi) & 0xff00;

      return 0xff000000 | (r << 8) | g | (b >> 8);
    }