راستش به نظر من صحنه ی واقعا عجیبی بود و به نظر می رسه که اشتباه از خود دات نت باشه.
به هر حال من کد شما رو اصلاح کردم و کار کرد.
//pictureBox2.Parent = pictureBox1;
//pictureBox3.Parent = pictureBox1;
pictureBox2.Visible = false;
pictureBox3.Visible = false;
Bitmap img = new Bitmap(new Bitmap(pictureBox1.Image));
using (Graphics g = Graphics.FromImage(img))
{
g.DrawImage(pictureBox2.Image, pictureBox2.Location);
g.DrawImage(pictureBox3.Image, pictureBox3.Location);
}
pictureBox1.Image = img;
pictureBox1.Refresh();