Is the source image full alpha or does it have a transparent colour/one bit alpha mask? It's common for one-bit alpha images to assume a background colour, often white and just fade to that. Your image looks exactly like what you get if you draw a one-bit alpha image on a non-white background.
If you use the one-bit transparency key, you get a 'halo', or rather mixing of the partially transparent values with the forms background color. So the 'halo' is pink in this form:
public class Form1 : Form
{
Image newImage;
public Form1()
{
this.BackColor = Color.Pink;
this.ClientSize = new Size(168, 168);
this.TransparencyKey = this.BackColor;
newImage = Image.FromFile(Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.MyPictures),
"dot-mac-logo.png"));
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawImage(newImage, 20, 20);
}
}
So don't use on-bit transparency with full alpha images - I'm not quite sure how to do it in C#, but in C you would use UpdateLayeredWindow
MSDN one I made earlier to specify an alpha blend between an off-screen DC and the window surface.
There's a sample of using UpdateLayeredWindow
from C# on this MSDN blog.