+2  A: 

The overload of the DrawImage that you are using takes the PPI values of the images to calculate the size. As the PPI value of the logo is lower than the PPI value of the image, the logo is scaled up so that their relative physical size (inches instead of pixels) are the same.

Use an overload where you specify the size in pixels:

g.DrawImage(logo, sourceImg.Width - horizontalPosition - logo.Width, sourceImg.Height - verticalPosition - logo.Height, logo.Width, logo.Height);
Guffa