If your running at a 32bit desktop res then regardless of the image's depth I think when you convert it to a memblock it gets changed to 32bit anyway. In image memblocks, the format of image data is like this:
alpha, blue, green, red
The first pixel value in the memblock starts at byte 12, this is because the header is from 0 to 11 bytes which is right for a 12 byte header.
A while ago(months ago actually) I made a set of functions for dealing with memblock functions. Maybe they'll help you work out how image memblocks work:
FUNCTION MEM_setup(memblockNum,width,height,setType)
SELECT setType
CASE 1
GLOBAL MEM_ATT_READ_MBN : MEM_ATT_READ_MBN = memblockNum
GLOBAL MEM_ATT_READ_WIDTH : MEM_ATT_READ_WIDTH = width
GLOBAL MEM_ATT_READ_HEIGHT : MEM_ATT_READ_HEIGHT = height
ENDCASE
CASE 2
GLOBAL MEM_ATT_WRITE_MBN : MEM_ATT_WRITE_MBN = memblockNum
GLOBAL MEM_ATT_WRITE_WIDTH : MEM_ATT_WRITE_WIDTH = width
GLOBAL MEM_ATT_WRITE_HEIGHT : MEM_ATT_WRITE_HEIGHT = height
ENDCASE
ENDSELECT
ENDFUNCTION
FUNCTION MEM_dot(x,y,value)
memPos = (y*MEM_ATT_WRITE_WIDTH*4)+(x*4)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+12,rgbb(value)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+13,rgbg(value)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+14,rgbr(value)
ENDFUNCTION
FUNCTION MEM_dotRGB(x,y,red,green,blue)
memPos = (y*MEM_ATT_WRITE_WIDTH*4)+(x*4)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+12,blue
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+13,green
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+14,red
ENDFUNCTION
FUNCTION MEM_circle(xPos,yPos,size,value)
for xLoop=0 to 360
x=xPos+cos(xLoop)*size
y=yPos+sin(xLoop)*size
if x>0 and x=<MEM_ATT_WRITE_WIDTH-1 and y>0 and y=<MEM_ATT_WRITE_HEIGHT-1
memPos = (y*MEM_ATT_WRITE_WIDTH*4)+(x*4)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+12,rgbb(value)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+13,rgbg(value)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+14,rgbr(value)
endif
next xLoop
ENDFUNCTION
FUNCTION MEM_circlefilled(xPos,yPos,size,value)
size#=size
for x=xPos-(size/2) to xPos+(size/2)
for y=yPos-(size/2) to yPos+(size/2)
if sqrt((xPos-x)^2+(yPos-y)^2)*2<size#
memPos = (y*MEM_ATT_WRITE_WIDTH*4)+(x*4)
if x>0 and x=<MEM_ATT_WRITE_WIDTH-1 and y>0 and y=<MEM_ATT_WRITE_HEIGHT-1
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+12,rgbb(value)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+13,rgbg(value)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+14,rgbr(value)
endif
endif
next y
next x
ENDFUNCTION
FUNCTION MEM_circle3(xPos,yPos,size,value,front)
size#=size
for x=xPos-(size/2) to xPos+(size/2)
for y=yPos-(size/2) to yPos+(size/2)
if sqrt((xPos-x)^2+(yPos-y)^2)*2<size#
memPos = (y*MEM_ATT_WRITE_WIDTH*4)+(x*4)
if x>0 and x=<MEM_ATT_WRITE_WIDTH-1 and y>0 and y=<MEM_ATT_WRITE_HEIGHT-1 and MEM_point(x,y)<>front
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+12,rgbb(value)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+13,rgbg(value)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+14,rgbr(value)
endif
endif
next y
next x
ENDFUNCTION
FUNCTION MEM_dome(xPos,yPos,size,value)
size#=size
for x=xPos-(size/2) to xPos+(size/2)
for y=yPos-(size/2) to yPos
if sqrt((xPos-x)^2+(yPos-y)^2)*2<size#
memPos = (y*MEM_ATT_WRITE_WIDTH*4)+(x*4)
if x>0 and x=<MEM_ATT_WRITE_WIDTH-1 and y>0 and y=<MEM_ATT_WRITE_HEIGHT-1
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+12,rgbb(value)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+13,rgbg(value)
WRITE MEMBLOCK BYTE MEM_ATT_WRITE_MBN,memPos+14,rgbr(value)
endif
endif
next y
next x
ENDFUNCTION
FUNCTION MEM_point(x,y)
memPos = (y*MEM_ATT_READ_WIDTH*4)+(x*4)
r = MEMBLOCK BYTE(MEM_ATT_READ_MBN,memPos+12)
g = MEMBLOCK BYTE(MEM_ATT_READ_MBN,memPos+13)
b = MEMBLOCK BYTE(MEM_ATT_READ_MBN,memPos+14)
value=rgb(b,g,r)
ENDFUNCTION value
FUNCTION MEM_pointRGB(x,y)
memPos = (y*MEM_ATT_READ_WIDTH*4)+(x*4)
MEM_POINTBLUE = MEMBLOCK BYTE(MEM_ATT_READ_MBN,memPos+12)
MEM_POINTGREEN = MEMBLOCK BYTE(MEM_ATT_READ_MBN,memPos+13)
MEM_POINTRED = MEMBLOCK BYTE(MEM_ATT_READ_MBN,memPos+14)
ENDFUNCTION
FUNCTION MEM_cls(memNum,value)
FILL MEMORY GET MEMBLOCK PTR(memNum)+12,value,GET MEMBLOCK SIZE(1)-12
ENDFUNCTION
FUNCTION MEM_copytoscreen(memNum)
LOCK PIXELS
ptrTo = GET PIXELS POINTER()
ptrFrom = GET MEMBLOCK PTR(memNum)+12
COPY MEMORY ptrTo,ptrFrom,GET MEMBLOCK SIZE(1)-12
UNLOCK PIXELS
ENDFUNCTION

"Lets migrate like bricks" - Me