GL.readPixels always returns zero

I’m rendering via OpenGLView, and need to read the framebuffer (typically the pixel under the mouse cursor).
I’m using code based on http://www.opengl-tutorial.org/miscellaneous/clicking-on-objects/picking-with-an-opengl-hack/

However, regardless of the content of the screen, GL.readPixels() always return ARGB 0000.
Is there something I’m missing here, (maybe binding of the framebuffer) ?

function getPixel (x:Int, y:Int):Int {
	GL.flush();
	GL.finish(); 
	GL.pixelStorei(GL.UNPACK_ALIGNMENT, 1);
	var bufferstatus =  GL.checkFramebufferStatus(GL.FRAMEBUFFER); //this is always GL.FRAMEBUFFER_COMPLETEvar pixel = new UInt8Array(4);
	pixel[0] = 128; pixel[1] = 128; pixel[2] = 128; pixel[3] = 128; //set these just to see if they change
	GL.readPixels (x, y, 1, 1, GL.RGBA, GL.UNSIGNED_BYTE, pixel); 
	trace("x:"+x+ " y:"+ y+ " a:"+pixel[3]+" r:"+pixel[0]+" g:"+pixel[1]+" b:"+pixel[2]);// always outputs a:0 r:0 g:0 b:0
	var a:Int = pixel[3];
	var r:Int = pixel[0];
	var g:Int = pixel[1];
	var b:Int = pixel[2];
	return (a << 24) | ( r << 16) | (  g << 8) | b ;
}