Why are BMP images stored upside down and zero-padded so they are four-byte aligned?
They are stored accordingly to a display coordinate system. (0, 0) is at the upper left corner. X (corresponds to width) goes from left to right. Y (corresponds to height) goes from up to bottom.
As for "4 Byte question" see Why must "stride" in the System.Drawing.Bitmap constructor be a multiple of 4?