Having problem drawing an XBM with U2G8

Hi, I'm trying to draw a XBM with U2G2 on a 128x64 OLED display (SSD1306 with I2C). I'm using an arduino r3.

The problem is that when I try to use the "U8X8_PROGMEM" modifier it just mess all the print (The display only shows a lot of pixels moving). So for example:
static const unsigned char He_bits[] U8X8_PROGMEM  won't display the XBM as desired.

But if I remove the modifier it displays as it should. Any ideas what's happening?
My code current code is:

#include <U8g2lib.h>
#include <U8x8lib.h>
#include <Wire.h>
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
#define He_width 68
#define He_height 64
static const unsigned char He_bits[] U8X8_PROGMEM = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xfc, 0x1f, 0x00, 0x00,
   0x00, 0xc0, 0xff, 0x01, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xff,
   0x01, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0xfc,
   0x1f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x1e, 0xc0, 0xff, 0xff, 0x01, 0x00,
   0x00, 0x3c, 0x00, 0x1e, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x3c, 0x00,
   0x1e, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x1e, 0xc0, 0xff,
   0xff, 0x01, 0x00, 0xc0, 0x03, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00,
   0xc0, 0x03, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0x03, 0x00,
   0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0x03, 0x00, 0xe0, 0xff, 0xff,
   0xff, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0xc0, 0xff, 0xff, 0xff, 0x01,
   0x3c, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0x3c, 0x00, 0x00,
   0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0x3c, 0x00, 0x00, 0xfc, 0xff, 0xff,
   0xff, 0xff, 0x01, 0x3c, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
   0x3c, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x3c, 0x00, 0xc0,
   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x3c, 0x00, 0xc0, 0xff, 0xff, 0xff,
   0xff, 0xff, 0x01, 0x3c, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
   0x3c, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x3c, 0xc0, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x3c, 0xc0, 0xff, 0xff, 0xff, 0xff,
   0xff, 0xff, 0x01, 0x3c, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
   0x3c, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x3c, 0xc0, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x3c, 0xc0, 0xff, 0xff, 0xff, 0xff,
   0xff, 0xff, 0x01, 0xc0, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
   0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff,
   0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
   0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff,
   0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00,
   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff,
   0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff,
   0xff, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
   0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xff,
   0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff,
   0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00,
   0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc,
   0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff,
   0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
   0x00, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x1f,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x01,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
  

void setup() {
 Wire.begin();
 u8g2.begin();

}

void loop() {
  u8g2.firstPage();
  do{
    u8g2.drawXBM(0,0,He_width,He_height,He_bits);
  }while(u8g2.nextPage());

}

The idea of the modifier is to store the bitmap in the flash memory instead of the SRAM.

I've attached some pictures to show how it looks depending if the modifier is or not.

From U8g2lib.h

    void drawXBM(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap)
      { u8g2_DrawXBM(&u8g2, x, y, w, h, bitmap); }
    void drawXBMP(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap)
      { u8g2_DrawXBMP(&u8g2, x, y, w, h, bitmap); }

There are two XBM methods. You want to use the drawXBMP() method for an XBM in PROGMEM e.g.

void loop() {
  u8g2.firstPage();
  do{
    u8g2.drawXBMP(0,0,He_width,He_height,He_bits);
  }while(u8g2.nextPage());

}

Note that your image is a bit crap (i.e. blocky)
Choose some better images.

David.