Recuperando un valor alfa de pixel para un UIImage

Actualmente estoy tratando de obtener el valor alfa de un píxel en un UIImageView. Obtuve el CGImage de [UIImageView image] y creé una matriz de bytes RGBA a partir de esto. Alfa es premultiplicado.

<code>CGImageRef image = uiImage.CGImage;
NSUInteger width = CGImageGetWidth(image);
NSUInteger height = CGImageGetHeight(image);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
rawData = malloc(height * width * 4);
bytesPerPixel = 4;
bytesPerRow = bytesPerPixel * width;

NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(
    rawData, width, height, bitsPerComponent, bytesPerRow, colorSpace,
    kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big
);
CGColorSpaceRelease(colorSpace);

CGContextDrawImage(context, CGRectMake(0, 0, width, height), image);
CGContextRelease(context);
</code>

Luego calculo el índice de matriz para el canal alfa dado usando las coordenadas de UIImageView.

<code>int byteIndex = (bytesPerRow * uiViewPoint.y) + uiViewPoint.x * bytesPerPixel;
unsigned char alpha = rawData[byteIndex + 3];
</code>

Sin embargo no consigo los valores que espero. Para un área transparente completamente negra de la imagen, obtengo valores distintos de cero para el canal alfa. ¿Necesito traducir las coordenadas entre UIKit y Core Graphics? Es decir, ¿está invertido el eje y? ¿O he entendido mal los valores alfa premultiplicados?

Actualizar:

La sugerencia de @Nikolai Ruhe fue clave para esto. De hecho, no tuve que traducir entre las coordenadas UIKit y las coordenadas de Core Graphics. Sin embargo, después de configurar el modo de mezcla, mis valores alfa eran los que esperaba:

<code>CGContextSetBlendMode(context, kCGBlendModeCopy);
</code>

Respuestas a la pregunta(2)

Su respuesta a la pregunta