Ler bytes de cores (RGB) de um bitmap

Eu estou tento um problema com um código que eu fiz que deveria exibir os bytes referentes aos valores de cor RGB de cada pixel de uma imagem no formato bmp (bitmap).
Eu sei que na api do windows tem como trabalhar com bitmaps de forma mais prática, mas como eu pretendo que o código final seja portável em questão de sistema operacional, eu criei os structs e estou fazendo a leitura apenas com o básico do C.
O código é esse: https://pastebin.com/8t2W5V97
O código RGB desses pixeis são:

(0, 0, 0), (0, 0, 255), (0, 255, 0), (0, 255, 255), (255, 0, 0), (255, 0, 255);

A imagem que estou tentando “ler” é um bitmap de 2x3 pixeis: https://prnt.sc/gnygch
E a minha saída é:

1. 255 2. 0 3. 0

4. 255 5. 0 6. 255

7. 0 8. 0 9. 0

10. 255 11. 0 12. 255

13. 0 14. 0 15. 255

16. 0 17. 0 18. 0

As primeiras leituras até coincidem com os pixeis de baixo, mas as outras não correspondem as outros pixels, ao menos não na ordem que ele estão dispostos.
Será que alguém consegue enxergar o que eu estou fazendo de errado?