Problema con ComposeShader en Android 4.1.1

Solo estoy tratando de implementar un selector de color para mi aplicación de Android, y me encontré con un problema extraño en Android 4.1.1. El siguiente código no crea los gradientes esperados en Android 4.1.1, pero sí en 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);

Aquí está el problema:

(ignora el cuadro rojo de abajo en Android 4.1.1. Acabo de hablar del gradiente de arriba)

¿Alguna idea de lo que está mal? Creo que falta algo en mi código, pero no tengo ni idea de qué.

EDICIÓN # 1: Si solo usowhiteMask parasetShader, También obtengo resultados diferentes para ambos sistemas: En la 2.3.7 puedo ver el texto del menú de configuración (que está detrás de la ventana emergente) brillando a través del rectángulo de degradado. Además, hay un degradado desde el borde superior izquierdo hasta el borde inferior derecho (negro a blanco), pero el degradado en el 4.1.1 va horizontalmente de izquierda a derecha.Así que parece ser un problema conComposeShader

EDITAR # 2: Encontré un ejemplo más simple para describir el 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);

Por lo tanto, solo tenemos un degradado lineal vertical de cualquier color a negro y un degradado lineal horizontal de negro a blanco. Si multiplicamos estas dos capas, deberíamos obtener el rectángulo correcto (como se muestra en la imagen de la izquierda). Pero en Android 4.1.1 solo veo el gradiente de shader2. También probé esto en Gimp con dos capas y el resultado fue el mismo que en Android 2.3.7.

Respuestas a la pregunta(1)

Su respuesta a la pregunta