G.drawimage desenha com tamanho incorreto

Estou criando um grande bitmap que contém algumas imagens menores de arquivos. As imagens têm um tamanho de 250 px, mas uma delas fica menor e a outra maior que 250 px. Estou apenas usando o método g.drawimage básico, para não entender o que faço de errado.

string[] imagePaths = Directory.GetFiles(@"C:\Users\admin\Desktop\Images");
ArrayList images = new ArrayList();

foreach (var item in imagePaths)
    images.Add(new Bitmap(item, true));

Bitmap list = new Bitmap(840, 1188);

Graphics g = Graphics.FromImage(list);

int size = 0;

for (int i = 0; i < images.Count; i++)
{
    g.DrawImage((Bitmap)images[i], new Point(10, (i + 1) * 10 + size));
    Bitmap bmp = (Bitmap)images[i];
    Console.WriteLine(bmp.Height);
    Font drawFont = new Font("Arial", 16);
    size += bmp.Height;
    g.DrawString(imagePaths[i].Substring(imagePaths[i].LastIndexOf("\\") + 1, imagePaths[i].Length - imagePaths[i].LastIndexOf("\\") - 4), drawFont, Brushes.Black, new Point(bmp.Width + 30, (i + 1) * 10 + size / 4));
}    

list.Save(@"C:\Users\admin\Desktop\list.png", ImageFormat.Png);

questionAnswers(1)

yourAnswerToTheQuestion