It's a bit long winded but next BlitzMax update will allow a more efficient method:
Function ReadBackBuffer(x,y) Global grab Local rgba,pixmap If Not grab grab=CreateImage(1,1,1,DYNAMICIMAGE) GrabImage grab,x,y pixmap=LockImage(grab,0,True,False) rgba=ReadPixel(pixmap,0,0) UnlockImage pixmap Return rgba End Function