lo hacía así:
Imports System.Drawing
Imports System.Drawing.Graphics
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PictureBox3.Image = Overlay(PictureBox1.Image, PictureBox2.Image, Color.Magenta)
End Sub
Public Function Overlay(ByVal SourceImage As Bitmap, ByVal OverlayImage As Bitmap) As Bitmap
'Llama a la version con Color
Return Overlay(SourceImage, OverlayImage, Color.Black)
End Function
Public Function Overlay(ByVal SourceImage As Bitmap, ByVal OverlayImage As Bitmap, ByVal ColorTransparent As Color) As Bitmap
Dim g As Graphics
'Obtengo Graphic de la imagen de fondo para poder dibujar sobe ella
g = Drawing.Graphics.FromImage(SourceImage)
'Hago trasparente la imagen que vamos a superponer
OverlayImage.MakeTransparent(ColorTransparent)
'Dibujo la imagen sobre el fondo
g.DrawImage(OverlayImage, 0, 0)
'Elimino manejador grafico
g.Dispose()
'Devuelve la imagen mezclada
Return SourceImage
End Function
End Class
en donde la segunda imagen (a superponer) tiene que ser el color de fondo en este caso Magenta, claro está que puede ser cualquier otro, pero preferentemente uno que no este en uso.