How Did Pinta Start?
Over the holidays, I was reading an article on OSNews stating how something like Paint.NET was needed for the Linux desktop. I had previously done some work on porting Paint.NET to Mono's winforms, but obviously a native Gtk version would be needed to fit in on Linux.
I've been meaning to play with Gtk and Cairo for several years, so I sat down for a few hours and wrote a basic paintbrush on a canvas. Within a few days, I had accomplished far more than I ever expected to, so I continued on. After a month, I was ready to unleash my rough creation to the world.
Is Pinta a Port of Paint.NET?
Not really, it's more of a clone. The interface is largely based off of Paint.NET, but most of the code is original. The only code directly used by Pinta is for the adjustments and effects, which is basically a straight copy from Paint.NET 3.0.
Regardless, we are very grateful that Paint.NET 3.0 was open sourced under the MIT license so we could use some of their awesome code. (If you need to get the Paint.NET 3.0 source code, you can get it from the paint-mono website.)
Can I Run Pinta on Windows?
Yep!
To run on .Net, you will need to install Gtk# for Windows, and Pinta from the zip file. Double-click Pinta.exe to run.
To run on Mono, you will need to install Mono from Windows, including the Gtk# stuff the installer lets you choose, and Pinta from the zip file. Open the Mono Command Prompt, navigate to the Pinta files, and run "mono Pinta.exe".
A .msi installer will likely be provided in the future.
Can I Run Pinta on Mac?
Yep!
Download and install Mono for Mac, and Pinta from the zip file. Open a terminal window to the Pinta files location, and run "mono Pinta.exe".
An app bundle will likely be provided in the future.
Pinta Memory Usage Keeps Growing
This is caused by keeping around infinite levels of Undo.
Basically, we keep an entire Cairo ImageSurface for each operation. To see the memory get freed, you can Undo all the way back to your starting canvas, and then perform any action. It will dispose all of your history, which frees the memory.
Of course, deleting all your history to free memory isn't very useful. In future versions, this will be mitigated in several ways:
- Storing less information (only the region that changed) per history step.
- Storing older history steps to disk instead of keeping them in memory.
- Allowing the user to customize how many history steps to keep in memory and on disk.




