You can't just read an image file as bytes, reverse the bytes and write it back to an imagefile, even BMP images contain more than just the "raw" pixel data:
BMP file format - Wikipedia[
^] So that your image just comes over as "pushed to one side" is pretty lucky stuff!
If you want to "flip" an an image horizontally or vertically, you have to read it into an Image class instance, flip the Image, and then save the new version.
This may help:
Image.RotateFlip(RotateFlipType) Method (System.Drawing) | Microsoft Docs[
^]