GIMP 3.1.4: Second Development Release towards GIMP 3.2

We’re happy to announce the release of GIMP 3.1.4! This release contains initial implementations of our two main GIMP 3.2 roadmap items: link layers and vector layers. It also contains a number of other nice new features, bugfixes, and internal improvements. We’re excited to share these with you and get your feedback in preparation for the GIMP 3.2 release candidate.

GIMP 3.1.4: splash screen
New development splash screen by Aryeom and Michael Schumacher - GIMP 3.1.4

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!

We’ll highlight some of the major features and fixes below. For more details, you can check out our NEWS Changelog.

Non-Destructive Layers

This release contains initial implementations of our two GIMP 3.2 roadmap features, link layers and vector layers. We are especially requesting feedback on the stability and user experience of these new layer types - we will continue to polish these features in preparation for the first GIMP 3.2 release candidate.

Link layers allow you to link external image files as a layer in your project. For instance, you might add an SVG image file as a link layer, make changes to it in Inkscape, and see it instantly updated inside GIMP! You can also non-destructively scale and rotate the link layer without impacting the quality of the original image.

Jehan initially developed the concept back in 2020, but it was put on hold in order to finish developing GIMP 3.0. It’s now ready for testing in GIMP 3.1.4!

Editing a GIMP SVG Link Layer with Inkscape, by Jehan - GIMP 3.1.4

To access this feature, go to the File menu and choose Open as Link Layer.... This will let you select an image to link from your file directory. Once linked, you can apply transforms and non-destructive filters as you like. You can replace the linked image by double-clicking the icon in the layer dockable or right-clicking and choosing “Edit Layer Attributes”. To convert it to a normal raster layer, you can right-click and choose “Discard Link Information”.

Among the planned changes, we want to add the ability to select a layer to show from a linked file, instead of always showing the full image. This would allow to link another XCF file selectively.

Note that this is an initial UI/UX design - we look forward to your feedback so we can continue to improve it!

Vector Layers

Vector layers allow you to create a shape and set its fill and stroke properties. You can then change the shape path, swap out different color settings, and transform the layer non-destructively, without losing any sharpness!

The code for vector layers began as a Google Summer of Code project by Hendrik Boom all the way back in 2006. Since then, it has been updated and ported by a number of developers including Martin Nordholts, Gilles Rochefort, Michael Natterer, and Jacob Boerema. CMYK Student continued this legacy and now this feature is implemented in GIMP 3.1.4 after initial design feedback by Aryeom, Reju, and Denis Rangelov!

Flower (created with early Vector Layers) by Reju
Flower (created with early Vector Layers) by Reju - GIMP 3.1.4

To create a vector layer, use the Path tool to draw a path. Click the Create vector layer button to generate a vector layer associated with that path. From here, you can continue to edit the path - the vector layer will automatically update. Once you have a vector layer selected, you can edit fill and stroke settings via the Path tool (or by double-clicking the thumbnail in the layer dock). The transform tools can also be used to non-destructively rotate, scale, and otherwise contort the vector layer. As with link layers, you can also convert the layer to a regular raster layer by right-clicking on the layer in the layer dock and choosing “Discard Vector Information”.

Wilber (created with vector layers) by Reju
Wilber (created with vector layers) by Reju - GIMP 3.1.4

Note that this is an initial UI/UX design - we look forward to your feedback so we can continue to improve it!

GEGL Filter Browser

Our GSoC student Ondřej Míchal has added, as part of their summer project, the GEGL Filter Browser! This tool shows, similarly to the existing Procedure Browser, a list of all GEGL operations (i.e., filters) and information related to their use.

A screenshot of the new GEGL Filter Browser.
A screenshot of the new GEGL Filter Browser.

This browser is not just another alternative to the GEGL website or the gegl command-line utility. GEGL is extensible and users can register into it new operations. GIMP is also one of these users! GEGL’s website only shows information about operations shipped by GEGL, the gegl utility can also show operations installed by users but does not show operations registered by GIMP at runtime. The new browser is capable of showing all of these operations!

We hope this browser will make it easier for plug-in developers to discover filters they would like to use with the gimp-drawable-filter-* () API for non-destructive editing introduced in GIMP 3.0 and help them in using them.

The new browser can be accessed under the Help menu or by using the / to search for “GEGL Filter Browser”.

MyPaint Brushes 2

We have updated our MyPaint code to support the version 2 brushes. This update allows the MyPaint brush engine to take your canvas zoom and rotation into account when painting, to better simulate real brush strokes.

GIMP now comes with over 20 new brushes from the Dieterle set bundled with MyPaint Brushes 2. Some of these include the much requested arrow brush and a Posterizer brush inspired by GIMP’s own Posterize filter. Of course, you can also add your own MyPaint brushes to use.

Example of some of the new MyPaint Brushes
Examples of the new MyPaint Brushes - GIMP 3.1.4

In addition to the MyPaint version 2 port, we’ve also added a new Gain slider in the MyPaint Brush tool. This controls how much pressure the brush engines thinks you’re applying when painting. This should be useful if you’re painting with a mouse and want to simulate pressing the brush harder or softer - it can also be helpful for tablet users who want to offset their own stylus pressure.

As a note for software packagers, GIMP now depends on mypaint-brushes-2.0 instead of mypaint-brushes-1.0. In our official builds, we also apply a patch that fixes warnings for libmypaint due to typos in some of the version 2 brush properties.

Text tool

Another of our GSoC students Gabriele Barbero has been working on a number of updates to the text tool. We recently merged some of their first improvements! Now in the on-canvas editor, you can use Ctrl + B to bold, Ctrl + I to italicize, and Ctrl + U to underline text. We hope to merge more of their updates in the next development release, which we detail in the Teams News section below.

Additionally, the outline color now shows a live preview as you’re changing it in the color selection dialogue, instead of only updating once you confirm your choice.

Plug-ins

HRZ

HRZ is an older format for storing SSTV signals, exactly 256x240 8-bit RGB images. In older versions of GIMP there was a separate plug-in that supported importing this format, but it was removed. We have restored import support as part of our general raw data plug-in.

JPEG 2000

We now support importing signed JPEG 2000 images. Most image formats store pixels with positive values. However, JPEG 2000 is used in several scientific operations where they might want to visualize negative values as well. Thanks to Allan Barklie for both pointing out the problem and sharing sample images to test with!

PAA Textures

GIMP can now import non-DXT PAA textures. This texture format is used in games created by Bohemia Interactive Studio.

Seattle Filmworks

From the 70s to the early 2000s, you could mail Seattle Filmworks your photo film and they’d digitize it in their proprietary image format. They made several versions, mostly based on a mangled form of JPEG. We’ve added support for importing the SFW93A and SFW94A versions of the Seattle Filmworks format. Special thanks to Loren Amelang for sharing additional sample images and notes.

TIFF

We have further improved our support for TIFFs created with Sketchbook. In addition to the layer support added in 3.0 RC1, we now load layer visibility, blending modes, and color tags. Group layers are also loaded, along with which layer was selected.

UX/UI

We continue to discuss, review, and implement user experience improvements. As always, we extend an invitation for you to contribute as part of the UX repo!

  • Our GSoC student Gabriele Barbero improved our support for showing the correct time format based on your system settings. If you have your time set to a 12 hour system, the time will be shown this way on the “Up to date as of…” section of the About Dialog instead of always using a 24 hour format.

  • Reju developed a new design for the Animation Playback plug-in. The layout now resembles the standard interface seen in video software like VLC Player. In addition, the progress bar is now a slider widget, which allows you to easily slide to a specific frame rather than repeatedly clicking the frame advance buttons.

  • Gabriele Barbero has updated our macOS code to support the System Colors theme. Now GIMP will adapt to match the macOS dark mode setting if you have your color scheme set to “System Colors”.

  • During 3.0 RC development, we added support for turning off animations based on OS settings. We extended this support to also control the sliding animations seen when switching pages in the Welcome and Preferences dialogues.

  • While many users find the Welcome Dialog’s Create tab to be a convenient feature, it did prevent the New Image and Open Image keyboard shortcuts from working unless it was turned off on start. Thanks to Gabriele Barbero, you can now have the best of both worlds - the Welcome Dialog will respond to those keyboard shortcuts!

  • A small but often requested change is that the color selector no longer shows decimals when set to 0...255 mode. This makes it clearer when you’re in that mode compared to 0...100%, and that you’re entering a whole number for the color instead of a percentage.

  • Many of GIMP’s “size entry” fields allow you to enter mathematical expressions such as 3 * 92cm to calculate values. Gabriele Barbero extended this feature to our Configure Grid dialogue and Monitor Resolution settings in Preferences.

Additional Fixes

  • Jehan made further fixes to our code to import user configurations from older versions of GIMP to 3.2 (and the 3.1 development releases)

  • On Windows with the display scaled more than 200%, the crosshair cursor was in the wrong place compared to where the mouse pointer actually was. This was due to changes in how scaling is handled in GTK3. This bug should be fixed now. Thanks to Lance Evans for pointing it out in their review of GIMP 3.0!

  • New contributer Corentin Noël developed a fix for the Image Settings tab not appearing when printing in sandboxed applications like flatpak or snap. Due to restrictions, the tab will be created as a secondary dialogue instead - allowing you to edit those settings once again. This patch is a more future-proof version of an earlier attempt by BZZZZ creatively bypassing the sandbox portal. We appreciate the work of both contributers to fix this problem! This proposed solution is not ideal, UX-wise, compared to the original tab, but it is necessary because the portal print dialog is hardly usable without these settings.

  • The experimental Seamless Clone tool was broken when we updated our code to handle copy and pasting multiple layers. This has been fixed, so you can now test out the tool again by enabling it in Preferences. However, the tool itself is still quite slow, so it remains in the experimental Playground until further work can be done on it.

  • We received a report that the “Import Raw Data” dialogue was too tall for some screens. We converted it to a two-column dialogue to reduce the height and better ensure everything’s visible on all screens.

  • As part of the port to GTK3, the default cursors were updated. This change led to some users experiencing the dreaded “Hand” cursor when hovering over a number slider widget. Unfortunately, the arrow cursor from GIMP 2.10 is not included on all platforms so we had to devise an alternate method. Denis Rangelov and Michal Vašut helped us find an initial solution while we continue to work on the design. We hope the current solution will make it easier for you to see where you’re clicking!

  • Jacob Boerema has added a new preference option to “Update metadata automatically”. When turned off, GIMP will no longer update comments or historical metadata such as creation time or software. This allows you to keep that metadata undisturbed even if you edit the image in GIMP. Note that image-related metadata such as thumbnails will still be updated, though you can control whether that is included in the final image on export.

  • Anders Jonsson continues their important work of finding and marking areas of the GUI as translatable. These fixes may not be immediately apparent for all languages, but his work makes it possible for those to be translated. If you’re interested in helping with translation, find your language and look for the GIMP and Friends section to contribute.

Internal Changes

Our co-maintainer Michael Natterer has been hard at work reviewing and improving our internal code. While less visible than some of the other changes listed above, this work is very important to GIMP’s stability and ease to work with. A few highlights:

  • Reorganizing our layer search code so it can be used with other items like channels and paths in the future.

  • Finishing our internal renaming process from GimpVectors to GimpPath, for consistency and to reduce confusion with the new Vector Layers code structures.

  • Reviewing and removing unnecessary or outdated test cases and code warnings.

  • Restructuring our internal GimpControllerManager and GimpContainerView APIs.

Mitch, hard at work during Wilber Week
Mitch working hard during Wilber Week 2025 - GIMP 3.1.4

Several of his changes are also laying the foundation for a future port to GTK4! These include moving code away from GtkTreeView which will be deprecated in future GTK versions, and converting to using GtkListBox. You can try out some of the future changes by enabling Use GtkListBox for simple lists in the Playground section of Preferences. Please report any bugs or performance issues you encounter!

Jehan has also created a new GIMP_WARNING_API_BREAK() macro. We use this in areas where we identify potential improvements that would break the public API. These will throw warnings when we start future development of GIMP 4, so that we know to re-examine those parts of the code to fix them.

PDB

For plug-in developers, we’ve added some new public API features. You can now change the paintbrush fade length and repeat settings with gimp-context-set-paint-fade-length and gimp-context-set-paint-fade-repeat. These functions work best in scripts when gimp-context-set-emulate-brush-dynamics is used to enable emulating brush dynamics.

The gimp-file-save API now also updates the image’s associated saved or exported file, so that changes are reflected in the GUI’s titlebar as well as future operations.

We’ve also added some initial public API for creating vector layers. You can use gimp-vector-layer-new to create a vector layer, gimp-vector-layer-refresh to update the view after adjusting the path, and gimp-vector-layer-discard to convert it to a raster layer. We will add more functions in future releases to adjust the fill and stroke settings.

Build Process

On GIMP 3.1.4 development cycle, Bruno Lopes focused their attention on Linux (again) by adding two new official nightly builds:

Nightly Snap

The biggest addition to our CI recently is a new Snap package available for aarch64 and x86_64. .snap, although mainly used on Ubuntu, is a distro-independent packaging format for Linux that allows users to install and keep GIMP updated in a separate environment, similar to AppImage and Flatpak. We believe that it is always good to provide more universal and established packaging options, especially considering how diverse the Linux community is.

Please note that, right now, it is not available on the Snap Store yet. We are still talking with the Snapcrafters developers to pass over the ownership of the GIMP store entry so we can maintain it. You can track our progress on their tracker. When that happens, we will be able to publish unstable and stable releases on the Snap Store on the same day we release the other official packages. Until then, you can install the nightly Snap by following these instructions

Nightly aarch64 Flatpak

We have had nightly flatpak builds for x86_64 architecture for several years, but didn’t had for aarch64 (only for releases on flathub). Now we will be distributing on our CI and on GNOME nightly repository aarch64 builds as well.

Unfortunately, the future availability of these nightly builds is way less certain since GNOME GitLab have only one working runner for this purpose and this runner is sponsored by Open Source Lab, which is in a delicate situation. So, we always welcome runner sponsors

Release stats

Since GIMP 3.1.2, in the main GIMP repository:

  • 79 reports were closed as FIXED.
  • 73 merge requests were merged.
  • 687 commits were pushed.
  • 16 translations were updated: Basque, Bulgarian, Catalan, Chinese (China), Dutch, Georgian, German, Italian, Norwegian Nynorsk, Romanian, Russian, Slovenian, Swedish, Thai, Turkish, Ukrainian.

30 people contributed changes or fixes to GIMP 3.1.4 codebase (order is determined by number of commits; some people are in several groups):

  • 13 developers to core code: Michael Natterer, Jehan, Alx Sa, Jacob Boerema, Gabriele Barbero, Ondřej Míchal, Niels De Graef, Bruno Lopes, lillolollo, Anders Jonsson, Henk Boom, Joey Riches, Liam Quin.
  • 10 developers to plug-ins or modules: Alx Sa, Jacob Boerema, Jehan, Anders Jonsson, Ondřej Míchal, Michael Natterer, Niels De Graef, Bruno Lopes, Corentin Noël, lillolollo.
  • 18 translators: Yuri Chornoivan, Martin, Luming Zh, Ekaterine Papava, Kolbjørn Stuestøl, Marco Ciampa, Cristian Secară, Anders Jonsson, Asier Saratsua Garmendia, Alexander Alexandrov Shopov, Jordi Mas, Aefgh Threenine, Aleksandr Prokudin, Alexander Shopov, Asier Sarasua Garmendia, Emin Tufan Çetin, Nathan Follens, Philipp Kiemle.
  • 3 theme designers: Alx Sa, Niels De Graef, Ondřej Míchal.
  • 4 contributors on other types of resources: Jehan, Michael Natterer, Gabriele Barbero, Henk Boom.
  • 9 build, packaging or CI contributors: Bruno Lopes, Michael Natterer, Jehan, Alx Sa, Joey Riches, Niels De Graef, Jacob Boerema, Ondřej Míchal, Henk Boom.

Contributions on other repositories in the GIMPverse (order is determined by number of commits):

  • Our UX tracker had 6 reports closed as FIXED.
  • ctx had 172 commits since 3.1.2 release by 1 contributor: Øyvind Kolås.
  • gimp-data had 11 commits by 3 contributors: Bruno Lopes, Jehan, Aryeom.
  • The gimp-test-images (unit testing repository) repository had 4 commits by 1 contributor: Jacob Boerema.
  • The gimp-macos-build (macOS packaging scripts) release had 15 commits by 3 contributors: Lukas Oberhuber, Bruno Lopes, Gabriele Barbero.
  • The flatpak release had 14 commits by 1 contributor, aided with 2 bots: Bruno Lopes,
  • Our main website (what you are reading right now) had 67 commits by 5 contributors: Bruno Lopes, Jehan, Alx Sa, Ondřej Míchal, gturri.
  • Our developer website had 36 commits by 3 contributors: Bruno Lopes, Jehan, Petr Vorel.
  • Our 3.0 documentation had 84 commits by 13 contributors: Marco Ciampa, Alevtina Karashokova, Kolbjørn Stuestøl, Nathan Follens, Jacob Boerema, Matthew Leach, Jordi Mas, Andre Klapper, Anders Jonsson, Andrei Rybak, Dick Groskamp, Julia Dronova, 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 GSoC students continue to make excellent progress on their projects!

  • Ondřej Míchal has already completed their core work on the GEGL Filter Browser (as noted above). Their next steps include collecting and reacting to user feedback, adding usage examples to both the new GEGL Filter Browser and Procedure Browser, and explore how the, now 3, developer browsers can be potentially merged in the future into a single point of reference for developers. You can read Ondřej’s final report for GSoC on his blog.

  • Gabriele Barbero has been working with mentor Liam Quin on several “almost-there” merge requests for improvements to the text tool! These include being able to move the on-canvas editor, see live previews of selected text color changes, and an overhaul of the text tool’s layout. You can read more about their work in their status report. Outside of GSoC, they’ve also been busy contributing some needed fixes for our macOS support.

  • Shivam has continued their work with mentor Jehan to build our Extensions infrastructure. When finished, this system will allow you to easily download, install (or uninstall), and use plug-ins, brushes, themes, and other custom features of GIMP without having to dig through folders and files. We look forward to sharing more details in a future update!

Also we recently came back from our Wilber Week event, which is an irregular team meeting. Twelve contributors were present. This year, the week was themed around the 30 years of GIMP (depending on how we look at it, GIMP may be already 30 year old — if we consider the first references to an unnamed project in emails — or will soon be, on November 21, if we consider the first release), as can be seen with the splash image.

So I guess: 🥳 Happy birthday GIMP! 🎂 Happiness to Wilber and the whole community! 🥂🤗

Downloading GIMP 3.1.4

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).

Note: we don’t provide a macOS package for Intel processor at release time because of last-minute issues. The package may come back soon… or not. Which is also a good occasion to remind that we always welcome new testers! 🤗 Our macOS packages have nearly nobody testing it apart our (awesome!) packager, Lukas Oberhuber.

👉 If anyone wishes to be a tester (for macOS or any other OS/package), reach out by opening an issue here telling us for which operating systems, architectures and packages you wish to contribute testing before a release.

There is no development release for the manual, but you can continue to use the existing GIMP 3.0 documentation.

What’s next

Now that we’ve implemented initial versions of the two main roadmap items, we will begin shifting our focus to developing the first GIMP 3.2 release candidate. This is in keeping with our new release policy - smaller, faster development cycles that get new features out to you all sooner!

Note that we definitely expect bugs and UX issues at this stage of the development of GIMP 3.2. We are releasing an early version containing in particular the two major features of GIMP 3.2 (link and vector layers) in order to get early feedback and suggestions to make the best possible implementation when we will release these as a stable version. Our designers are aware that their usability is not always ideal currently; we expect to get there with your help.

User testing and feedback is crucial - we want to hear from you. Help us find bugs and polish the user experience, so we can make the best version of GIMP 3.2 we can!

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!

You can suggest changes or report bugs by following the link to report a bug near the bottom of www.gimp.org.