Siempre hay una sección de "encabezado" de un archivo BMP que tiene 14 bytes de tamaño, por lo que es mejor comenzar a leer desde el 15 byte en adelante. Tenía exactamente el mismo problema que tú hace muchas lunas.
Entonces ... use una llamada de función como esta antes de su fread
:
fseek ( file, 15, SEEK_SET);