2D paint program (large canvas)

I’m writing a 2D paint program and want to support a canvas size up to 4096x4096 pixels (32-bit RGBA). For now I’m working on single layer, but I’m writing this to support multiple layers in the future. Real-time brushes that update as you lay down your stroke and reasonably quick undo’s are my two goals.

For textures this large, I’m wondering if PBO’s or FBO’s are what I want to use? I’ve read a few articles about them, but I still don’t understand the pros and cons in this type of application.

TIA!

You absolutely need FBOs for that;
You don’t need PBOs.