Problema com o ComposeShader no Android 4.1.1

Eu só estou tentando implementar um seletor de cores para o meu aplicativo android, e se deparou com um problema estranho no Android 4.1.1. O código a seguir não cria os gradientes esperados no Android 4.1.1, mas acontece no 2.3.7:

Shader fadeInRight = new LinearGradient(0, 0, pWidth, 0, 0x00000000, 0xFF000000, Shader.TileMode.CLAMP);
Shader blackToWhite = new LinearGradient(0, 0, 0, pHeight, 0xFF000000, 0xFFFFFFFF, Shader.TileMode.CLAMP);
Shader whiteMask = new ComposeShader(blackToWhite, fadeInRight, PorterDuff.Mode.DST_IN);
Shader blackToColor = new LinearGradient(0, 0, pWidth, 0, 0xFF000000, hue, Shader.TileMode.CLAMP);
Shader shader = new ComposeShader(blackToColor, whiteMask, PorterDuff.Mode.SCREEN);
paint.setShader(shader);
...
canvas.drawRect(new Rect(0, 0, pWidth, pHeight), paint);

Aqui está o problema:

(ignore a caixa vermelha abaixo no Android 4.1.1. Acabei de falar sobre o gradiente acima)

Alguma ideia do que está errado? Eu acho que há algo faltando no meu código, mas não tenho a menor ideia do que.

EDIT # 1: Se eu apenas usarwhiteMask parasetShader, Eu também obtenho resultados diferentes para ambos os sistemas: No 2.3.7 eu posso ver o texto do menu de configuração (que está por trás do popup) brilhando através do retângulo de gradiente. Além disso, há um gradiente da borda superior esquerda para a borda inferior direita (preto para branco), mas o gradiente na 4.1.1 vai horizontalmente da esquerda para a direita.Então parece ser um problema comComposeShader

EDIT # 2: Eu encontrei um exemplo mais simples para descrever o problema:

Shader shader1 = new LinearGradient(0, 0, 0, pHeight, hue, 0xffffffff, Shader.TileMode.CLAMP);
Shader shader2 = new LinearGradient(0, 0, pWidth, 0, 0xff000000, 0xffffffff, Shader.TileMode.CLAMP);
Shader shader = new ComposeShader(shader1, shader2, PorterDuff.Mode.MULTIPLY);

Então, temos apenas um gradiente linear vertical de qualquer cor para preto e um gradiente linear horizontal de preto para branco. Se multiplicarmos essas duas camadas, devemos obter o retângulo correto (como na captura de tela à esquerda acima). Mas no Android 4.1.1 eu vejo apenas o gradiente de shader2. Eu também tentei isso no Gimp com duas camadas e o resultado foi o mesmo que no Android 2.3.7.

questionAnswers(1)

yourAnswerToTheQuestion