Strange bug with myGLCD.drawBitmap when called 6 times

Creating your own extension to the glcd library makes it easy.

class GlcdEx : public glcd{
  
  public:
  
    void DrawBitmapFar( uint_farptr_t bitmap, uint8_t x, uint8_t y, uint8_t color= BLACK ){

      uint8_t width, height;
      uint8_t i, j;

      width = pgm_read_byte_far(bitmap++); 
      height = pgm_read_byte_far(bitmap++);

      #ifdef BITMAP_FIX
        if( (y & 7) || (height & 7))
        {
        	this->FillRect(x, y, width, height, WHITE);
        }
      #endif

      for(j = 0; j < height / 8; j++) {
        glcd_Device::GotoXY(x, y + (j*8) );
        for(i = 0; i < width; i++) {
	  uint8_t displayData = pgm_read_byte_far(bitmap++);
	  if(color == BLACK)
  	    this->WriteData(displayData);
          else
            this->WriteData(~displayData);
      	 }
      }
    }
};

GlcdEx GLCDEX;

byte data0[] PROGMEM = { 3,3,1,2,3,4,5,6,7,8,9 };
byte data1[] PROGMEM = { 3,3,1,2,3,4,5,6,7,8,9 };
byte data2[] PROGMEM_FAR = { 3,3,1,2,3,4,5,6,7,8,9 };

void setup() {
  
    GLCDEX.Init();
    GLCDEX.DrawBitmap( data0, 0, 0 );
    GLCDEX.DrawBitmap( data1, 0, 3 );
    GLCDEX.DrawBitmapFar( GET_FAR_ADDRESS( data2 ), 0, 6 );
}

void loop() {}