Get/SetOlePicture Bitmap loss

I want to pass a bitmap between a Client and Server, using COM.
I tried to implement this using IPictureDisp and TPicture as the medium.
But the application never gets a TPicture with a bitmap.  The TPicture does
contain a graphic; what type of graphic it is I can't determine.
  I've tried to put the code in one block and it still doesn't work:

    var
      APicture, BPicture: TPicture;
      pd: IPictureDisp;
    begin
      APicture := TPicture.Create;
      BPicture := TPicture.Create;
      try
        APicture.Bitmap.LoadFromFile('c:\winnt\winnt.bmp');
        GetOlePicture(APicture, pd);
        SetOlePicture(BPicture, pd);
        myBitmap.Canvas.Draw(0,0,BPicture.Graphic);
      finally
        APicture.Free;        // APicture.Height=317,
APicture.Bitmap.Height=317
        BPicture.Free;        // BPicture.Height=180,
BPicture.Bitmap.Height=0
      end;//try..finally
    end;//function

  BPicture will indicate that it doesn't have a bitmap.  But it does have a
graphic which is smaller than the height of the bitmap that was loaded
(APicture.Height=317, BPicture.Height=180; myBitmap.Height=180).
  So, my questions are as follows:
    Why does it get transformed from a bitmap?  This takes extra effort in
the process.
    How do I determine what it is that BPicture has?  It's not a bitmap so
what is it?  (Also, the Graphic's property of the TPicture doesn't appear to
tell the user the type)
  If anyone knows what's going on with this... you deserve guru standing
with Delphi!
  Any help appreciated, THANKS!
-----------------------------------------------------------
Alex McIntosh
MarketPoint
Alex.McInt...@MarketPointInc.com