One thing to do is add a panel to your form. Because you can dock the panel to your form then set that forms color to match your transparent key. You can't set your form to a transparent scheme. Placing a panel can help gets around this by then placing the picture box on the panel. this.TransparencyKey = System.Drawing.Color.Silver; is not a great color to use as a transparent key, and that's why you are picking up that gray around your image.
My suggestion is to not use the picture box. Instead use the transparency key to make the entire form transparent, and then in the Paint event handler of the form, use DrawImage() to paint the PNG in the correct location. I'm not sure if this will work or not, though. I'm too brain fried right now to recall the sequence of events when a form is being rendered with the transparency key color set.