There is a function that invert the colors of your screen, and I have tried it, I think you should try this piece of code.

At the beginning of the code be sure that you declared the object using the same name.

    Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

To invert the display

    display.invertDisplay(true);

To return the display again

    display.invertDisplay(false);

As you said that you want a button to invert the display you might use this code I made 

    if(digitalRead(BUTTON_PIN)){
        display.invertDisplay(true);
    }
    else{
        display.invertDisplay(false);
    }

Or you might use **Interrupts** for better performance depending on your code.

And to easy the things for you, here is all the functions for your display....

[Here !][1]

I hope I've helped you out. any edits in the answer is well appreciated, as I am a student.


  [1]: https://adafruit.github.io/Adafruit_SSD1306/html/class_adafruit___s_s_d1306.html