problems dsiplaying images on oled.

I have a i2c oled that works and I want to display images one it here is my code I attemted to make work

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2


#define LOGO16_GLCD_HEIGHT 16 
#define LOGO16_GLCD_WIDTH  16 

const unsigned char smile [] = {
0x00, 0x00, 0x00, 0x70, 0xF8, 0xE8, 0x70, 0x00, 0x00, 0x70, 0xF8, 0xE8, 0x70, 0x00, 0x00, 0x00,
0x00, 0x00, 0x04, 0x0C, 0x1C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x1C, 0x0C, 0x04, 0x00, 0x00
};

void setup() {
  // put your setup code here, to run once:
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
 
}

void loop() {
    display.clearDisplay();
display.drawBitmap(30, 16, smile, 16, 16, 1);
  display.display();
}

however the code does not work and instead it displays a image that resembles a corrupted font character.

the image I was trying to display is attached.

smile.png

smile.png