Since I don't have neither your LoadDDSImage procedure nor a DDS image for testing, I simulated the procedure by the Lazarus paw which is read into a png, and I use the IntfImage to color the black paw in red and replace the alpha-channel by a gradient from fully transparent at the left to fully opaque white at the right. Look at the attached demo. It works as expected.
If this basic code does not work in your example you should check whether the color and alpha channels are handled correctly. FPImage uses 16-bit colors and alpha. This is why you shl the rgb value by 8 bits. But you do not shl the alpha channel. I do not know if this explains why your image background is black.