GIMP 3.1.2: First Development Release towards GIMP 3.2
In keeping with our new release schedule, we’re proud to announce GIMP 3.1.2, the first development version of what will become GIMP 3.2! This release contains a number of new features that we’ve been working on in-between bugfixes for GIMP 3.0. We’re looking forward to your testing and feedback as we continue adjusting and tweaking the code and design of them.

Our new development splash screen was created by Ville Pätsi and commemorates our recent visit to the 2025 Libre Graphics Meeting
Note that a development release is not ready for production use. It might crash. If it didn’t have problems it would be 3.2 already. So please do test, but understand this is a feature release for early adopters and for the more adventurous!
- Theme colors for Brush, Font, and Palette
- Auto-match Windows and Linux OS theme
- New Paint Mode: Overwrite
- New Text Outline Option
- Non-destructive editing
- CMYK
- File format support
- UX/UI
- Notable bug and regression fixes
- Plug-in/Script Developers
- Build Process
- Release stats
- Team news
- Around GIMP
- Downloading GIMP 3.1.2
- What’s next
Theme colors for Brush, Font, and Palette¶
Brush previews in GIMP are printed on a white background. For grayscale brushes, we use black to represent the brush stroke. Since the Brush dockable displays many brush previews side by side, it can create a distractingly bright section if you’re using the Dark or Gray themes, especially in grid mode.
We now have a toggle to make brush previews rendered with the theme foreground and background colors instead. This means that in dark mode, the brush background will be a darker color while the brush itself will be lighter. The fonts dockable also has this toggle, and palette displays will automatically use the theme colors. Note that this is a cosmetic change only and does not affect how you create brushes.
Default Colors | Theme Colors |
---|---|
![]() |
![]() |
Auto-match Windows and Linux OS theme¶
GIMP defaults to the Dark mode version of our Default theme on first load. Thanks to the hard work of several contributors (Hari Rana, Niels De Graef, Isopod, and Jehan), we know have an additional “System Colors” color scheme so that GIMP matches your current OS theme preferences on Windows and Linux (provided your OS supports the portal). GIMP’s theme will also automatically update if you change your system preference.
You can of course still explicitly set a color scheme in Preferences or the Welcome Dialog if you’d prefer to use a scheme that’s different from your OS.

If you’re a macOS developer and are interested in adding support for this feature on your platform, please reach out!
New Paint Mode: Overwrite¶
New contributor Woynert implemented a new paint blend mode called Overwrite. It allows you to directly replace the pixels over the area you paint, without blending the transparency values of the brush and the existing pixels in that area.

This new mode is particularly useful for pixel art, when you want to overwrite your target opacity over the source opacity, and is mostly targetted at the Pencil tool. With the brush tool or other paint tools, some interpolation of opacity and color will still happen for softer transitions as this is what is usually expected with these tools.
For these non-pencil use cases, we are still tweaking the algorithm and we welcome feedback. For the pencil tool use cases though, the sharp overwrite of color and alpha is pretty much what is expected from this mode.
Note also that this new mode is only available as a paint mode (in particular, you won’t find it in the list of layer modes or effect modes).
New Text Outline Option¶
There’s a new setting in the text tool to control the direction of the text outline. You can have the text outline grow inward, outward, or in both directions!

Non-destructive editing¶
Co-Maintainer Michael Natterer spent several days during the Libre Graphics Meeting, going over the non-destructive filter code in order to clean it up and refactor it. While this is mostly behind-the-scenes work, this should reduce bugs and make future development and maintenance much easier.
Building on this work, GIMP now supports adding non-destructive filters to channels! The Channels dockable
now shows the same Fx
column as the Layers dockable, so you can edit, rearrange, delete, and merge filters
on channels just like you can with layers.
CMYK¶
The CMYK Color Selector now calculates and displays the Total Ink Coverage of the selected color. This is useful when printing, as depending on the printing system and the media used, there may be a limit on how much ink can be applied.

File format support¶
We have added support for several new formats and improved some existing ones. Are there image formats you need? Let us know and we can investigate whether we can add them.
ART Raw Loader¶
We’re adding support for using ART (AnotherRawTherapee) as a Camera Raw loader in GIMP, in addition to our existing support for darktable and RawTherapee. If you have ART already installed, GIMP should automatically recognize it and use it to load Camera Raw format images for further editing. If that doesn’t work for you, please reach out and let us know!
Krita Palette¶
By request, we’ve added a new option to export to Krita‘s .kpl
palette format from GIMP.
You can do this by choosing Export as
from the menu in the Palette dockable.
Photoshop Patterns¶
Jacob Boerema has added support for importing Photoshop patterns! You can put Adobe .pat
files
in the GIMP pattern folder and automatically load them in the same way as GIMP’s own .pat
files.
We have tested this feature with RGB and grayscale Photoshop patterns, but if you run into any issues
with your patterns, please let us know (and include the pattern file)!
Photoshop Curves and Levels presets¶
You can now use presets from Photoshop’s Curves and Levels filters in GIMP’s Curves and Levels filters!
When you use these filters, choose Import Current Settings from File...
from the Preset menu and select your .acv
or .alv
preset respectively. If your preset doesn’t work with those filters, please let us
know (and include the preset files)!

PSD/PSB¶
Alx Sa has implemented initial support for exporting PSBs, Photoshop Large format. It is very similar to PSDs - the main difference is that you can export images up to 300,000 pixels wide and tall instead of PSD’s 30,000 limit. Thanks to Ville Pätsi for their initial testing. If you work with very large images (or PSBs in general), we’d appreciate your testing and feedback!
Also, our PSD/PSB importer now recognizes legacy Drop Shadow and Inner Shadow non-destructive filters. These will be converted to GIMP’s non-destructive Dropshadow filter so you can edit and adjust them after opening the image.
APNG¶
GIMP can now import APNG animations. People building or packaging GIMP should note that we used the standard libpng
for this,
not a patched version, so no changes are needed.
OpenEXR¶
We’ve now added support for loading multi-layer OpenEXR images. For instance, if you export a multi-view image from other software such as Blender, all views should show up in GIMP as individual layers.
JPEG 2000¶
We have had import support for JPEG 2000 images for many years. Steve Williams of Advance Software implemented an export plug-in for their own use and shared a GIMP 3 compatible version with us. We have merged it into the existing JPEG 2000 loader, so now you can both import and export JPEG 2000 images!

Playstation TIM¶
Andrew Kieschnick originally developed a GIMP 2 plug-in to load and export Sony
Playstation 1 TIM
textures and images. We have updated the code to be compatible
with GIMP 3 and incorporated it as a standard image plug-in.
OpenRaster¶
OpenRaster is a file format intended to help share layered images between graphics editors (such Krita, MyPaint, and Scribus). In addition to the standard format (which GIMP already supports), there are two official extensions to remember which layers were selected and which ones were content locked. GIMP now supports exporting and importing both.
Over The Air Bitmap¶
We’ve added import support for Nokia’s historical black and white Over-the-Air Bitmap format. (Hey, ImageMagick supports it too!)
Jeff’s Image Format¶
As promised in our April news post,
we have added import support for the GIF variant known as Jeff’s Image Format (.jif
).
AVCI and HEJ2¶
Daniel Novomeský has added support for importing Advanced Video Coding (AVCI) still images. They’ve also added support for exporting HEJ2 images, which is an HEIF file that contains a JPEG 2000 image.
UX/UI¶
Denis Rangelov, Reju, Michal Vašut, and other designers have been working on a number of UX/UI updates for GIMP 3.2 in the UX repository. While the larger changes are still being designed and reviewed, we have been implementing several of their quality of life fixes:
-
We found several instances where the Foreground Selection algorithm would run when switching to another tool, even if no selection had been made yet. This caused an unnecessary lag, so we adjusted the algorithm to avoid running in those cases.
-
A few more areas where the system theme could conflict with GIMP’s theme were found and fixed. In fact, a few of these glitches were found while taking screenshots for this news post!
-
The Palette dockable now automatically selects the next swatch when you delete a previous one, allowing you to quickly delete several swatches by just clicking the Delete button repeatedly.
-
The state of the “Merge Filter” checkbox for non-destructive filters should no longer be affected if you apply a filter that currently has to be destructive, like Lens Blur. In prior versions, applying a destructive filter would always enable the checkbox for other filters, even if you had turned it off before.
-
“Lock pixels” now generates an undo step in undo history, just like “Lock Position” and other locks.
Notable bug and regression fixes¶
Unique Color Count¶
The Color Cube Analysis plug-in was removed from GIMP 3, as most of its functionality already exists in the Histogram dockable. We say most, because one feature was missed - the display of how many unique colors the image has. Thankfully, Google Summer of Code student Gabriele Barbero has reimplemented this feature! You can enable it by checking “Compute unique colors” in the Histogram dockable. The count will update live as you edit the image.

Additional Fixes¶
Some image formats do not allow images to have transparent sections. This can be confusing if
you’re not familiar with all the details of the image you imported, especially when rotating or applying a
filter with transparency such as Color to Alpha
. We now detect if a filter or transformation would require
transparency, and automatically add an alpha channel to the layer to prevent unexpected distortions.
Jacob Boerema implemented a fix for ZDI-CAN-25082, which potentially affected loading certain DDS images on a 32-bit machine.
In the 3.0.4 news post, we implemented a fix for transparency padding when pasting a selection to other programs. Cheesequake extended this fix to also cover copy and pasting full layers to other programs. Please let us know if you notice any other related regressions!
Estecka fixed a bug where editing filters on a hidden layer would automatically cause the layer to reappear.
The legacy Jigsaw filter has been updated to work on transparent layers. While it’s not a non-destructive filter, this fix should allow you to apply it to a separate transparent layer and then use it as an overlay for your image.
Plug-in/Script Developers¶
We’ve added a new API to create a GimpCoordinates
widget in the auto-generated dialogue.
gimp_procedure_dialog_get_coordinates ()
will connect two numeric parameters with a chain link and a
unit type dropdown. You can see an example of how it’s used in our
Tile plug-in, or in our
GimpUi API documentation.
Due to an oversight, unsigned integer parameters did not generate widgets in GimpProcedureDialog
despite
being functionally this same. This has been corrected, so now gimp_procedure_add_uint_argument ()
will
create input fields automatically just like gimp_procedure_add_int_argument ()
does.
Also, Jehan added a new default behavior to the GimpChoice
parameter type. If you
make one with only two options, the auto-generated dialog will display radio buttons instead of
a dropdown menu. You can of course override this default with gimp_procedure_dialog_get_widget ()
, but
we think this will help save people some clicks for simple options.
Build Process¶
Bruno Lopes continues their hard work to improve our build and packaging processes. A few of the highlights:
-
Our build system now automatically generates a list of image formats that GIMP can open on Windows. This means rather than manually maintaining (and often forgetting to update) a list, the installer and MSIX will associate all supported images as we implement them, like the ones mentioned in this news.
-
Our Linux builds now have a similar method of auto-generating image format associations via their mimetype too. We hope to implement this feature for macOS builds as well in a future update.
-
All previously non-portable build scripts of GIMP repository have been made POSIX-compliant. This means that it’s now easier to use these on platforms like BSD. Bruno has also implemented more checks in our CI pipelines to prevent non-portable code from being reintroduced in the future. Even though most of these utility scripts will not be used on daily basis by packagers (we ported the important
.sh
scripts used by Meson to.py
scripts since GIMP 3.0.4 development cycle), this makes our builds truly cross-platform.
Release stats¶
Since GIMP 3.0.4, in the main GIMP repository:
- 42 reports were closed as FIXED.
- 55 merge requests were merged.
- 302 commits were pushed.
- 12 translations were updated: Bulgarian, Catalan, Chinese (China), Dutch, Galician, Georgian, Norwegian Nynorsk, Persian, Slovenian, Swedish, Turkish, Ukrainian.
29 people contributed changes or fixes to GIMP 3.1.2 codebase (order is determined by number of commits; some people are in several groups):
- 14 developers to core code: Jehan, Michael Natterer, Alx Sa, Jacob Boerema, Bruno Lopes, Christoph Reiter, Estecka, Gabriele Barbero, Hari Rana, Ondřej Míchal, Philip Zander, cheesequake, lloyd konneker, woynert.
- 9 developers to plug-ins or modules: Alx Sa, Bruno Lopes, Jehan, lloyd konneker, Jacob Boerema, Advance Software, Anders Jonsson, Daniel Novomeský, Natanael Copa.
- 12 translators: Luming Zh, Martin, Yuri Chornoivan, Ekaterine Papava, Alexander Shopov, Kolbjørn Stuestøl, Nathan Follens, Anders Jonsson, Danial Behzadi, Emin Tufan Çetin, Jordi Mas, Yago Raña.
- 1 theme designers: Alx Sa.
- 2 contributors on other types of resources: Jehan, Bruno Lopes.
- 11 build, packaging or CI contributors: Bruno Lopes, Alx Sa, lloyd konneker, Jehan, Advance Software, Christoph Reiter, Michael Natterer, Natanael Copa, Sam James, woynert, Ondřej Míchal
Contributions on other repositories in the GIMPverse (order is determined by number of commits):
- Our UX tracker had 3 reports closed as FIXED.
- ctx had 186 commits since 3.0.4 release by 1 contributor: Øyvind Kolås.
gimp-data
had 10 commits by 4 contributors: Jehan, Bruno Lopes, Ville Pätsi, Alx Sa.- The
gimp-test-images
(unit testing repository) repository had 2 commits by 1 contributor: Jacob Boerema. - The
gimp-macos-build
(macOS packaging scripts) release had 18 commits by 2 contributors: Lukas Oberhuber, Bruno Lopes. - The flatpak release had 7 commits by 2 contributors: Bruno Lopes, Jehan.
- Our main website (what you are reading right now) had 26 commits by 3 contributors: Alx Sa, Jehan, Bruno Lopes.
- Our developer website had 20 commits by 3 contributors: Bruno Lopes, Lloyd Konneker, Jehan.
- Our 3.0 documentation had 40 commits by 9 contributors: Kolbjørn Stuestøl, Alevtina Karashokova, Nathan Follens, Jacob Boerema, Alx Sa, Matthew Leach, Alevtina, Anders Jonsson, Yuri Chornoivan.
Let’s not forget to thank all the people who help us triaging in Gitlab, report bugs and discuss possible improvements with us. Our community is deeply thankful as well to the internet warriors who manage our various discussion channels or social network accounts such as Ville Pätsi, Liam Quin, Michael Schumacher and Sevenix!
Note: considering the number of parts in GIMP and around, and how we
get statistics through git
scripting, errors may slip inside these
stats. Feel free to tell us if we missed or mis-categorized some
contributors or contributions.
Team news¶
Our Google Summer of Code students are making great progress with their summer projects!
Gabriele Barbero is making some much-requested improvements to our on-canvas text editor. In their test branch, they’ve made the style editor moveable, and each text layer remembers its editor’s position when you switch between them. With a little more polish and bug-testing, this feature should show up in a future 3.1 development release!
Ondřej Míchal has created a GEGL Filter Browser prototype in their own test branch. This involved a lot of research, as there any a number of edge cases and formats to account for. When finished, this feature will be very useful for script and plug-in developers, especially with the new filter API that lets them create and apply any effect available in GIMP!
Shivam is working on a website to list and display third-party GIMP extensions (the rebirth of the GIMP registry that older creators may have known). A first version of the script to generate extensions’ web pages from their metadata has already been merged.
Around GIMP¶
We printed stickers of the new Wilber logos for the 2025 Libre Graphics Meeting.

You can use this file if you’d like to print your own Wilber stickers. You can also request reimbursement if you’re planning to print enough to hand out at a local event or GIMP User Group meeting. Note that we are still working out the procedure for these requests, but we encourage you to reach out and discuss your idea.
Downloading GIMP 3.1.2¶
You will find all our official builds on GIMP official website (gimp.org):
- Linux AppImages for x86 and ARM (64-bit)
- Linux flatpaks for x86 and ARM (64-bit)
- Universal Windows installer for x86 (32 and 64-bit) and for ARM (64-bit)
- Microsoft Store package for x86 and ARM (64-bit)
- macOS DMG packages for Intel hardware
- macOS DMG packages for Apple Silicon hardware
Other packages made by third-parties are obviously expected to follow (Linux or *BSD distributions’ packages, etc.).
There is no development release for the manual, but you can continue to use the existing GIMP 3.0 documentation from GIMP 3.1.
What’s next¶
This first development release contains many new features we’ve been working on during 3.0 development. Our main focus for GIMP 3.2 on the roadmap is developing two new types of non-destructive layers - linked layers and vector layers. We hope to share more information about these in future news posts.
This faster pace release schedule also proves to be quite stimulating and relies on years of infrastructure and procedure preparations. So far, it looks like it works quite well!
While we remind that this is a development version and therefore we advise against using it for production, we also really welcome feedback and bug reports. At every first stable release in a new series, too many bugs are discovered. GIMP is a community, first and foremost. The software will improve because many people participate! Now that we are starting the development releases for a brand new stable series, we are really relying on everyone so that the upcoming GIMP 3.2 can be as stable and good as possible.
Don’t forget you can donate and personally fund GIMP developers, as a way to give back and accelerate the development of GIMP. Community commitment helps the project to grow stronger!