!Help needed with BitBlt

I am attempting to write a transparent control in D3 using three bitmaps;
one each for the MouseUp, MouseOver and MouseDown events.  The MouseUp
image is the default and displays just the non-transparent parts of the
TBitmap, using the source below.  However when the image is changed to the
MouseOver image (using similar code), this second image is inverted and the
third (MouseDown) image displays the supposedly transparent background as
well as the non-transparent parts of the bitmap.

    MaskBmp.Assign(FMouseUpImage);
    MaskBmp.Mask(FMouseUpImage.TransparentColor);
    BitBlt(Canvas.Handle, 0, 0, Width, Height, MaskBmp.Canvas.Handle, 0, 0,
SRCERASE);
    BitBlt(Canvas.Handle, 0, 0, Width, Height, FMouseUpImage.Canvas.Handle,
0, 0, SRCERASE);

What I believe I need to do is "undraw" the current images before a new one
can be drawn, in order to clear the canvas.  I have tried various
arrangements of raster operation codes (SRCAND, DSTINVERT, etc), but to no
avail.  

I would be grateful for any help received.

Thanks in advance.