TImage - getting hold of bitmap bits

How can I access the actual bitmap data buffer in a TImage? I'm trying to
use TImages instead of writing resource files and compile them into the
project. The bitmap buffers are going to be used as a parameter to
GLTexImage2D (OpenGL method for loading textures into video memory). I've
tried using the WinAPI call GetObject, but it doesn't seem to work very
well. The image seems to be a "structured random pattern" (if you know what
I mean). No errors occurs runtime and the BITMAP structure seems to hold the
correct data (width, height, size etc).

Below are actually three different attempts. The first two commented lines
are for loading the bitmap as a resource. The last two lines are actually a
test that the OpenGL code is correct. MakeCheckImage produces a checkerboard
bitmap in a buffer and using that buffer as a parameter to GLTexImage2D
renders a perfect result. The last attempt is the one you can see below.
imgFlare in the GetObject call is a TImage. The image ends up totally
distorted what ever I do (except for my checkerboard).

Any comments, suggestions or code samples leading to a solution are welcome.

Best regards
Johan

- - - 8< - - -

bmp: BITMAP;
_bmp: HBITMAP;
imgFlare: TImage;
...

//  _bmp := LoadImage(hInstance, MAKEINTRESOURCE(FLARE_TEX), IMAGE_BITMAP,
0, 0, LR_CREATEDIBSECTION);
//  GetObject(_bmp, SizeOf(bmp), @bmp);
  GetObject(imgFlare.picture.bitmap.handle, SizeOf(bmp), @bmp);

  GLGenTextures(1, @texName);
  flareTextureId := texName[1];
  GLBindTexture(GL_TEXTURE_2D, flareTextureId);

  GLPixelStorei(GL_UNPACK_ALIGNMENT, 1);
  GLTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

  GLTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  GLTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
  GLTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  GLTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

  GLTexImage2d(GL_TEXTURE_2D, 0, 3, bmp.bmWidth, bmp.bmHeight, 0,
               GL_RGB, GL_UNSIGNED_BYTE, bmp.bmBits);
//  MakeCheckImage;
//  GLTexImage2d(GL_TEXTURE_2D, 0, GL_RGBA, CHECK_IMAGE_WIDTH,
CHECK_IMAGE_HEIGHT, 0,
//               GL_RGBA, GL_UNSIGNED_BYTE, checkImage);

- - - 8< - - -