4.1 is now available!

This update converts some effects to use the GPU for rendering, resulting in huge performance gains. Copy/Paste can now be performed on selections, Bicubic resampling is now available for the Move Selected Pixels tool, and there are lots of little quality-of-life improvements and general bug fixes.

If you’re using the Windows Store release, you should get the update automatically within the next few days.

For the Classic release, you can use the built-in updater by going to ⚙ Settings → Updates → Check Now. You can also download it directly from the website.

Thanks to @BoltBait and @toe_head2001 for their contributions in this release!

Here’s a quick overview of some of the bigger changes:

  • GPU-powered Effects! Some of the effects have been rewritten to use Direct2D’s image processing system, and the results are phenomenal for performance. Gaussian Blur is actually fast now and no longer takes ages to complete for large images or radii, and the same goes for both Motion Blur and Radial Blur (although Radial Blur does currently need a pretty powerful GPU). A few other effects were converted for the sake of completeness and for my own learning, and there are two new ones (Morphology and Turbulence). This is where most of my time (the aforementioned "last 7 months") and sweat was spent: getting a GPU-based effect rendering system up and running end-to-end was no small feat! Expect to see more effects converted over to the GPU in subsequent updates as this tech matures. I am also planning to make the GPU available for plugins to use in a future update.
  • Copy/Paste for Selections. You can now copy the active selection to the clipboard, as well as paste from the clipboard to the active selection (all selection combine modes are supported). This copies only the selection, not the pixels that are within the selection. You can then apply the selection to another layer or image, or just save it for later. Because the selection is copied to the clipboard as JSON text, you can use external utilities to maintain them or even do processing on them (you aren’t limited to Paint.NET’s built-in selection operations, in other words). For example: if you want to save and reuse 5 selections, just open up 5 copies of Notepad and use them as a storage buffer. You can also use Paste Selection when a regular image is on the clipboard: if the image is from Paint.NET, the embedded selection will be used, otherwise the image’s size will be converted to a selection (a rectangle anchored to x=0,y=0 with the same width and height as the image). More formal documentation for the data format will be available soon.
  • Bicubic resampling for the Move Selected Pixels tool. This can produce much higher quality results than Bilinear resampling. It is very CPU-intensive, so a fast CPU with 6+ cores is highly recommended if you plan to use it a lot. The default is still Bilinear, so if you’d prefer to always use Bicubic you can change it from Settings -> Tools.
  • New +/- buttons for Tolerance and Hardness. This is a great quality-of-life improvement, especially for the Magic Wand when you’re trying to find just the right value for Tolerance.

Full change log:

    • Improved: Gaussian Blur, Motion Blur, and Radial Blur now render using the GPU and are significantly faster
    • Changed: The following effects are now rendered using the GPU: Edge Detect, Pixelate, and Relief
    • Changed: The following adjustments are now rendered using the GPU: Black & White, Invert Colors
    • New Effect: Distort -> Morphology (uses the GPU)
    • New Effect: Render -> Turbulence (uses the GPU)
    • New: Bicubic resampling is now supported for the Move Selected Pixels tool. A CPU with 6 or more cores is highly recommended if you want to make it the default mode from within Settings -> Tools.
    • New: Edit -> Copy Selection. This will copy the current selection’s geometry to the clipboard as JSON text.
    • New: Edit -> Paste Selection. This will apply the selection from the clipboard to the current selection. All 5 selection combine modes are supported.
    • Changed: The Text tool now uses Points for font size measurement. You can also elect to use the old font size metric, "Fixed (96 DPI)" via the dropdown to the right of the font size.
    • Fixed: The Text tool’s recentering algorithm when typing reaches the edge of the viewport should be better
    • New: Added +/- buttons to the Tolerance and Hardness sliders.
    • Changed: Increased max zoom level to 6400%
    • New: The mouse wheel may now be used to scroll a long menu, such as when a lot of effects are installed (thanks @toe_head2001!)
    • Changed: For Windows 7 SP1 users, the Platform Update from 2013 is now required (it contains Direct2D v1.1)
    • Fixed: The "Finish" button wasn’t working if it was in an overflow container (thanks @toe_head2001!)
    • Fixed: Opening certain large images and then zooming with the mouse wheel would sometimes result in the scroll position being completely wrong
    • Changed: Hiding a layer no longer auto-selects the nearest visible layer. You can re-enable this in Settings, although this setting may be removed in a future version.
    • New: For the Windows Store release, the paintdotnet: protocol can now be used to launch the app so that you can specify command-line parameters. For example, you can go to Start -> Run and type in paintdotnet:"path to file1.png" path_to_file_2.png then both images will be opened (even if Paint.NET is already open)
    • New: Added Heptagon (7-sided polygon) and Octagon (8-sided polygon) shapes
    • Fixed the high-DPI inset-text scaling for the Shape selector (e.g. Pentagon with an inset "5")
    • New: Palettes are now also loaded from Documents/ App Files/Palettes. This folder name is not localized so that installation scripts may easily make use of it
    • Fixed: View -> Pixel Grid will now correctly adjust to dynamic changes in the theme (light vs. dark)
    • Fixed: The background color for the Tolerance slider has been corrected for non-dark themes
    • Changed: Removed shortcut keys for all built-in Adjustments except for Invert Colors (Ctrl+Shift+I). This is being done to free up shortcut keys for other functionality.
    • New: Added a shortcut key to trigger a full .NET garbage collection: Ctrl+Alt+Shift+` (tick/tilde). This should only ever be needed for troubleshooting purposes.
    • New: Battery Saver Mode in Windows 10 is now respected, whether enabled manually or due to low battery. UI animations will be disabled.
    • New: Long file paths (>MAX_PATH) are now supported on Windows 10, as long as the group policy setting is enabled ("Enable Win32 long paths")
    • New for plugin developers: The IndirectUI Color Wheel control now supports an alpha slider. To use this, set the range (min/max values) of the Int32PropertyControl to [Int32.MinValue, Int32.MaxValue] (thanks @BoltBait!)
    • New for plugin developers: there is a new FileChooser property control type for string properties (thanks @toe_head2001!)
    • New for plugin developers: there is a new BinaryPixelOp.Apply(Surface, Surface, Surface, Rectangle) method overload (thanks @BoltBait!)
    • Changed: The IndirectUI text control now has a vertical scroll bar when multiline mode is enabled (thanks @toe_head2001!)
    • Changed: Visual C++ and OpenMP runtimes are now only loaded from the "app local" copy (never from the system directory). This fixes a number of headaches, and also works around a compatibility issue with the Surface Go
    • Fixed: Crash when drag-and-dropping images onto Paint.NET when a tool was active but with uncommitted changes
    • Fixed a very old and nasty crash, "InvalidOperationException: ScratchSurface already borrowed"



35 thoughts on “ 4.1 is now available!

    • Rick Brewster says:

      not just yet, but it’s planned for around the v4.2 timeframe along with other brush system upgrades. Don’t worry, it’s at the top of the list 🙂 You will need at least Windows 8.1, btw — the new unified input “pointer” APIs are not available on Windows 7.

    • Rick Brewster says:

      Yes, definitely — although this operation within Paint.NET is not in a good place to be executed on the GPU. There would be too much data transfer between the CPU and the GPU, and the work items (tiles) are at too fine of a granularity.

      Long-term, if I move more of the rendering engine over to the GPU, then doing this on the GPU would be a natural fit. This might be a v5 or v6 kind of thing though, as it would require ripping out and replacing a lot of stuff.

      Short-term, I am going to look into use Halide to optimize the performance of this. I’m currently using Direct2D to do the rendering (for bicubic only — not for bilinear or nearest neighbor), but there’s a lot of overhead because of the way it wants to do things versus the way Paint.NET is already doing things. Halide would permit me to not use Direct2D here and avoid its overhead. (to be clear: Direct2D, even in software mode, is a great fit for this rendering task — but not when you have to fit it into a rendering engine that is already doing its own multithreading and tiling)

  1. Byte Doctor says:

    Well, nuts. You removed the only Adjustments keyboard shortcut I regularly use (Auto Level). Sure would like a way to re-enable it (or configure keyboard shortcuts so I can assign what I want to the functions I use…)

    • Rick Brewster says:

      You can also use the keyboard chord Alt+A, A. That is, press Alt+A, release both keys, then type A.

      I am planning to add this text into the menus to make this more obvious, e.g. “Auto-Level …… Alt+A, A” It just didn’t fit into 4.1. Hopefully for 4.1.1.

  2. Rhialto says:

    Any chance for a ‘lens blur’ similar to snapseed? Sometimes I need to upload a picture to my phone only to apply this effect before going back to Maybe we can already achieve it but I’m not a pro, just a casual user…

    Nice all the GPU stuff, let’s see if my 1080 Ti makes a difference.

      • Rhialto says:

        Thanks, note that I had te remove the s in https. I found one from 2008 called Focal Point, I’ll see if it still works and accomplish the same as Lens Blur.

  3. Babibubeba says:

    Nice update, thanks !

    However, as time passes, french translation become gibberish a little more every update. And it’s not just awkward sentences you can understand. For some of the translations, it’s sometimes french words unrelated to the subject, and preferably in random order. That makes the reader involved in a game of guesssing what was the english phrase that was wrongly translated , to understand what the phrase means. It also contrasts a lot with other french phrases which are perfectly translated.

    Since it reaches a point where the reader has to guess the original english phrase when he wants to understand, I think you’d better not provide french translations and fallback on english rather than provide automatic translations. In the same time you should also rely on comunity translations rather than automatic translations to increase the coverage of each language.

  4. Долматов Алексей (@Dolmatov_Alexey) says:

    You can add a hotkey override to the settings, which will allow you to select the necessary keys / remove unnecessary ones. Even assign keys to the menu items of plug-ins (if the plug-in is not loaded / deleted, then consider the combination free and store in memory until the settings update).

  5. LaaZa says:

    Could you consider adding simple calculation support for numerical inputs, for image dimension at least. This could be really useful for multiplying/dividing sizes quicly without having to do external calculations. This feature is really useful in blender for example. Multiplication and Division would be enough.

  6. Pneen says:

    I’ve never commented before. I’d like to thank you for keeping Paint Dot Net free and continually updating it! Thank you so much! There is just one thing I want and that is to be able to centre things.

Comments are closed.