paint.net 4.3.3 is now available

In this release, Paint.NET has been migrated to the just-released .NET 6. This comes with additional improvements for both rendering and startup performance, as well as ensuring that myself and plugin authors can develop using the latest version of the platform, including C# 10.

There are also some improvements to Dark Theme support on Windows 10/11, UI fixes for Windows 11, three new translations (Catalan, Corsican, and Thai), and a large number of important bug fixes — including some memory leaks that were found by several members of the forum.

I’ve also done some important infrastructure work. Prior to this release, the self-extracting portion of the installer was handled by Nullsoft Scriptable Installer System ("NSIS"). This worked very well for a long time, but it finally hit a wall with the 4.3 release with how well it could compress the installer due to memory constraints (NSIS is 32-bit only). This is why the ARM64 installer was so much larger than the x64 or x86 installer. In this release I’ve fixed that by moving to a custom self-extractor based on the LZMA SDK (aka 7-zip). The result is better compression and a faster "extracting" stage, although the x64 and x86 installers are actually a little larger because I’m using some features in .NET 6’s "crossgen2" to optimize startup performance, and these have resulted in an increase in the size of the app DLLs.

I’ve also migrated most of Paint.NET’s non-COM interop code over to the TerraFX.Interop.Windows library, developed by Tanner Gooding at Microsoft. I’ll be using this over the next several releases to port Paint.NET’s COM-based interop code, which is used for Direct2D (et. al.), and which should result in more startup performance improvements (the current interop code is written in C++/CLI, which cannot be precompiled with crossgen / ReadyToRun). Over time this will help to maximize Paint.NET’s performance, shed legacy code (e.g. C++/CLI), and increase the speed that I can write new code and release new updates.

NOTE for Windows 7, Windows 8.1, and 32-bit/x86 users: Paint.NET v4.3.x will be the last release(s) that work on Windows 7, Windows 8.1, or on any 32-bit/x86 version of Windows. It has become significantly more difficult and time consuming to support these lately, not very many people are using them, and I can no longer justify the cost and frustration of keeping support for these afloat. Starting with Paint.NET v4.4, only Windows 10 and 11+ will be supported, and only on 64-bit (x64 and ARM64). Once Paint.NET v4.3.3 is released, I will start working on v4.4 and will only release v4.3.x updates on an as-needed basis and only until v4.4 is completed.

Get the update

  • Microsoft Store release
  • Classic Desktop release
    • Download the installer directly (web installer for all CPUs and OSes). This is the recommended download if you don’t have Paint.NET installed. It can also be used to update the app.
    • If you already have it installed, you should be offered the update automatically within the next week or so, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now.
    • Offline Installers and Portable ZIPs are available over on GitHub.

Changes since v4.3.2:

Enjoy!

paint.net 4.3.3 beta build 7991

This build fixes compatibility with CodeLab-generated plugins whose Help functionality was broken by .NET 6, which was due to a change in GZipStream.Read() I also fixed a memory leak in Settings -> Tools, and there are 3 new translations: Catalan, Corsican, and Thai.

NOTE for Windows 7, Windows 8.1, and 32-bit/x86 users: Paint.NET v4.3.x will be the last release(s) that work on Windows 7, Windows 8.1, or on any 32-bit/x86 version of Windows. It has become significantly more difficult and time consuming to support these lately, not very many people are using them, and I can no longer justify the cost and frustration of keeping support for these afloat. Starting with Paint.NET v4.4, only Windows 10 and 11+ will be supported, and only on 64-bit (x64 and ARM64). Once Paint.NET v4.3.3 is released, I will start working on v4.4 and will only release v4.3.x updates on an as-needed basis and only until v4.4 is completed.

Get the update

To get this update, make sure you have "Also check for pre-release (beta) versions" enabled in Settings, and then click on the Check Now button. (Unfortunately alpha/beta releases are not currently available for the Microsoft Store version of the app).

image.png

You can also download the online/web installer at the forum.

Offline installers, portable ZIPs, and MSIs for deployment can be found over at the GitHub releases page.

Changes since 4.3.3 alpha build 7988:

  • New translations: Catalan (ca), Corsican (co), and Thai (th)
  • Fixed compatibility with 38 plugins, built with CodeLab, whose Help functionality was broken by a change in .NET 6’s implementation of GZipStream.Read(). Thanks @toe_head2001 for finding the culprit, and @AndrewDavid for extensively testing the fix!
  • Fixed compatibility with the ArgusPaintNet.Convolution effect plugin
  • Fixed a crash that could happen when opening Settings -> Diagnostics
  • Fixed a memory leak with Settings -> Tools. Thanks @otuncelli for finding this!
  • Updated the bundled AvifFileType plugin to v1.1.17.0, which fixes a crash when reading large EXIF data blocks. Thanks @null54!

paint.net 4.3.3 alpha build 7988

This build has a bunch of bug fixes and small improvements, and the app has been migrated to .NET 6 which has a lot of performance improvements that Paint.NET benefits from.

NOTE for Windows 7, Windows 8.1, and 32-bit/x86 users: Paint.NET v4.3.x will be the last release(s) that work on Windows 7, Windows 8.1, or on any 32-bit/x86 version of Windows. It has become significantly more difficult and time consuming to support these lately, not very many people are using them, and I can no longer justify the cost and frustration of keeping support for these afloat. Starting with Paint.NET v4.4, only Windows 10 and 11+ will be supported, and only on 64-bit (x64 and ARM64). Once Paint.NET v4.3.3 is released, I will start working on v4.4 and will only release v4.3.x updates on an as-needed basis and only until v4.4 is completed.

Get the update

To get this update, make sure you have "Also check for pre-release (beta) versions" enabled in Settings, and then click on the Check Now button. (Unfortunately alpha/beta releases are not currently available for the Microsoft Store version of the app).

image.png

You can download the online/web installer at the forum.

Offline installers, portable ZIPs, and MSIs for deployment can be found over at the GitHub releases page.

Changes since v4.3.2:

  • New: The app has been migrated to .NET 6, which has resulted in improved rendering and startup performance
  • Improved: The download size is now much smaller for ARM64 by about 33%
  • Improved various UI elements for Dark Theme, e.g. scrollbars and drop-down lists (Windows 10 v1809+ only)
  • Fixed the way various UI controls look on Windows 11, e.g. buttons and dropdown lists
  • Fixed the View -> Zoom to Window command when using the keyboard shortcut (Ctrl+B), which was resetting instead of toggling the zoom level
  • Fixed a rendering bug in the Dents and Polar Inversion effects, which was reported over at https://forums.getpaint.net/topic/118746-paintnet-update-changed-the-way-the-dents-distortion-filter-works-causing-unwanted-artifactsglitches-was-this-an-intended-change/
  • Fixed a memory leak with the selection renderer, which would cause gigabytes of GPU memory usage and crashes
  • Fixed some GDI object leaks, which would eventually result in a crash
  • Fixed a crash while drawing a selection, right clicking on the History window without releasing the left mouse button, and then clicking to redo a history entry
  • Fixed an issue that was preventing new plugins from loading their native DLL dependencies as specified in their .deps.json file
  • Fixed the app itself crashing after an effect crash is trapped and when you choose to restart the app
  • Fixed a text rendering bug in some parts of the UI, as reported by @midora over at https://forums.getpaint.net/topic/118866-paintnet-43-footnote-of-indirectui-control-in-filetype-shows-artifacts-after-scrolling/
  • Fixed the "untitled:" file name argument prefix, which was preventing Window Clippings from being able to send screenshots
  • Changed: The /createMsi command for the installer has been removed. Instead, you can now download the MSIs directly from the GitHub releases page.
  • Fixed a few issues when using the MSI directly. The execution context was fixed, and it will no longer delete the desktop shortcut or Start Menu shortcut if executing the MSI for a second time.
  • Fixed some registry keys that were not being deleted during uninstall 
  • Improved performance during the "extracting" stage of the installer by migrating away from NSIS. This has also helped improve compression, although other changes have resulted in a net increase in the download size (but with improved performance for the app).
  • Updated the bundled AvifFileType plugin to v1.1.16.0 (thanks @null54!)

Enjoy!

paint.net 4.3.2 is now available

This is a hotfix for the recently released version 4.3 update.

Get the update

  • Microsoft Store release
  • Classic Desktop release
    • Download the installer directly (web installer for all CPUs and OSes). This is the recommended download if you don’t have Paint.NET installed. It can also be used to update the app.
    • If you already have it installed, you should be offered the update automatically within the next week or so, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now.
    • Offline Installers and Portable ZIPs are available over on GitHub.

Changes since 4.3.1:

  • Fixed a hang at app startup on systems using certain locales, such as Thai (th-TH)
  • Improved performance of Settings -> Tools, which used to take 6-7 seconds to open. Now it takes about 1 second, thanks to @Bruce Bowyer-Smyth
  • Fixed ReadOnlyBoundToNameValuesRule for IndirectUI-based plugins. It was not initializing correctly, although it would work correctly afterward.

Enjoy!

paint.net 4.3.1 is now available

This is a hotfix for the recently released version 4.3 update.

Get the update

  • Microsoft Store release
  • Classic Desktop release
    • Download the installer directly (web installer for all CPUs and OSes). This is the recommended download if you don’t have Paint.NET installed. It can also be used to update the app.
    • If you already have it installed, you should be offered the update automatically within the next week or so, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now.
    • Offline Installers and Portable ZIPs are available over on GitHub.

Changes since 4.3:

  • Fixed an issue with using Explorer’s "Open With" menu on Windows 7, 8.1, and some editions of Windows 10
  • Fixed image thumbnails in Explorer’s Details View only having a generic document icon instead of the Paint.NET icon
  • Fixed a spurious, harmless error in Settings -> Plugin Errors
  • Fixed a race condition that could cause a crash
  • Fixed not being able to use Ctrl+C to copy text from the Setup Downloader, which is especially important for troubleshooting

Enjoy!

paint.net 4.3 is now available

​This is a big release, with a lot of performance improvements across the whole app. Some of this is due to the migration from .NET Framework 4.8 to .NET 5, which may not sound like much but is actually a huge deal :) .NET 5 is a massive update to the .NET runtime, and brings a lot in terms of performance with its improved code generation (JIT). It also enables me to optimize code even further via the use of SIMD intrinsics (SSE* and AVX* on x86/x64, and AdvSIMD on ARM64), which I’ve started putting to good use. In addition, effects are faster, plugin loading is faster (especially for shapes), the Magic Wand and Paint Bucket tools are significantly faster, and overall performance is just plain better. Even installation and updating are faster because I was able to remove the "Optimizing performance" stage from setup (via ReadyToRun / crossgen instead of NGEN).

There was also a lot of work that went into how Paint.NET is built, packaged, downloaded, and installed. The older systems were showing their age and were not only long overdue for an upgrade but were actually starting to fall apart. This presented an opportunity to modernize things with a web-based downloader/installer, self-contained deployment (no more .NET to install!), portable ZIPs, and native ARM64 support.

One thorny topic that came up was the issue of plugin compatibility. There were many plugins, mostly older ones, that just did not survive the migration to .NET 5 due to various changes that were made in .NET to shed legacy shackles which were holding back progress. I’m happy to report that most of these plugins were coerced into working. Some plugins needed only simple accommodations, while many of them required going much further with literal hot patching of their byte code at load time to detour them away from crashes or other bad fates.

Now that the migration to .NET 5 is complete, Paint.NET will also be moving to .NET 6 in the very near future. It’s due for its final release in November and you can expect a Paint.NET update shortly afterward. This will improve performance even further, and will be a simple upgrade.

This has been a 5-month long project, but it’s finally time to download, install, and enjoy! Big thanks to everyone who downloaded the alphas, reported bugs and broken plugins, and patiently suffered through various bugs and performance problems.

Get the update

  • Microsoft Store release
  • Classic Desktop release
    • Download the installer directly (web installer for all CPUs and OSes). This is the recommended download if you don’t have Paint.NET installed. It can also be used to update the app.
    • If you already have it installed, you should be offered the update automatically within the next week or so, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now.
    • Offline Installers and Portable ZIPs are available over on GitHub.

Changes since 4.2.16:

  • New: The app has been migrated to .NET 5, and performance has been greatly improved as a result.
  • New: ARM64 is now natively supported, which improves performance on devices such as the Surface Pro X.
  • New: .NET no longer needs to be installed on the system because the app now uses self-contained deployment.
  • New: Portable ZIPs are now available. Please note that portable installations do not currently update automatically.
  • Improved performance of most effects and other compute-intensive tasks by about 20% on average, due to .NET 5’s improved code generation (JIT).
  • Improved startup performance for the Microsoft Store release. Previously, .NET Framework’s NGEN was unavailable for Store apps, but now .NET 5 enables self-contained deployment along with ReadyToRun + crossgen, which serves the same purpose.
  • Improved performance: Many areas of the app have been optimized to use SIMD (SSE2/3/4.1, AVX2) on x86/x64:
    • Drawing on an image with a large number of layers is faster
    • Drawing with the Gradient Tool’s alpha mode is faster
    • Drawing with the Recolor tool is faster
    • Drawing with the Eraser or Clone Stamp tool is faster when using a color whose alpha value is less than 255
    • Drawing with the Overwrite blend mode is faster
    • Drawing with the Shapes tool is faster, due to improved compositing performance
    • Drawing with a brush tool without antialiasing is faster
    • Tile compression has lower overhead due to being optimized for SSE2 and AVX2
    • Working with complex selections is faster
    • Many other optimizations all throughout the application and rendering engine
  • Improved performance of loading custom Shapes by ~16x on 2nd and subsequent app starts.
  • Improved performance of the Magic Wand tool by a substantial amount.
  • Improved performance of the Paint Bucket tool by a substantial amount.
  • Improved performance of the Paint Bucket when changing the color or certain other toolbar settings by not recalculating the stencil buffer for the filled area. Changes should now be visible immediately.
  • Improved performance of Polar Inversion by 3x, mostly as a corollary to fixing a bug that was causing hangs, and a little bit due to .NET 5.
  • Improved performance on systems without HyperThreading by reserving 1 core for the UI. Performance is also improved on systems with it by utilizing more of the logical cores.
  • Improved performance while installing or updating the app, due to no longer needing the "Optimizing performance for your system" stage (NGEN has been replaced with ReadyToRun via crossgen).
  • Improved memory usage when custom shapes are installed so they don’t litter the heap with hundreds of thousands of boxed value types (e.g. floats and points).
  • Improved selection antialiasing quality by using a 4×4 super sampling filter instead of a 3×3 super sampling filter. The code has also been optimized to use SSSE3 on x86/x64.
  • Improved: Effect and File Type plugins can now be organized into folders. The plugin loader will recursively search for DLLs up to 1 folder deep.
  • Fixed a bug when saving with "Auto Detect" bit-depth which was causing fidelity loss on some images that already had 256 colors or less. This was reported here: https://forums.getpaint.net/topic/118401-images-already-with-256-or-fewer-colors-being-dithered-when-saved-with-palette/
  • Fixed: There were some issues with zooming in/out using the keyboard, where the anchoring point was not calculated correctly, causing the canvas to drift in the wrong direction.
  • Fixed the inability to use middle-mouse panning after using a selection tool and pressing delete before releasing the mouse button.
  • Improved: Plugins are now loaded into isolated AssemblyLoadContexts, which improves stability and resiliency to various problems with versioning, loading dependencies, plugin bugs, and incorrect plugin installation.
  • Fixed a crash when trying to draw a fixed-size rectangle selection that was larger than the image.
  • Fixed a bug with the Tolerance slider where both 58% and 59% would be displayed as 58%, due to a rounding issue. The correct value was actually being used, it just wasn’t being displayed correctly.
  • Added a /disablePlugins command-line argument to aid in troubleshooting various issues with app startup and incorrect plugin installation.
  • New: Additional directories can now be specified for plugin discovery, which (e.g.) enables the use of OneDrive for storing plugins. See here for more info: https://forums.getpaint.net/topic/118583-feature-request-set-custom-app-files-plugins-folder/?do=findComment&comment=586013
    • Note that this does not work with the portable version of the app, but you can install plugins next to the app so it isn’t necessary.
  • Updated the bundled AvifFileType plugin to v1.1.15.0, courtesy of @null54, which includes support for multi-layer AVIF files, and adds native support for ARM64. See the project’s GitHub Releases page for more information.
  • Updated the bundled DdsFileTypePlus plugin to v1.10.10.0, courtesy of @null54, which adds native support for ARM64. See the project’s GitHub Releases page for more information.
  • Updated the bundled WebPFileType plugin to v1.3.7.0, courtesy of @null54, which adds native support for ARM64. See the project’s GitHub Releases page for more information.
  • Changed: FileType.IsReflexive() is now deprecated via [Obsolete], and is no longer honored. However, the Save Configuration dialog will no longer try to generate previews for FileTypes that do not specify any file extensions for loading, which is what this method was being used for.
  • Known Issue: Due to crashing, GPU accelerated effects (Gaussian Blur, Motion Blur, Radial Blur) on ARM64 will actually use the CPU for rendering.

​Enjoy!

paint.net 4.3 beta (build 7929)

If all goes well, the next build will be the final release of 4.3. This update includes some minor bug fixes and a handful of plugin compatibility improvements. Translations are now updated and … there’s not much more to say :)

Get the update

To get this update, make sure you have "Also check for pre-release (beta) versions" enabled in Settings, and then click on the Check Now button. (Unfortunately alpha/beta releases are not currently available for the Microsoft Store version of the app).

image.png

For direct download links, please visit the forum.

Changes since 4.3 alpha build 7921:

  • Fixed the inability to use middle-mouse panning after using a selection tool and pressing delete before releasing the mouse button
  • Fixed the ability to create MSIs with the installer using the /createMsi command-line parameter
  • Fixed compatibility with these older plugins: Distort This!, Soft Proofing, Stickman, TR’s Morpher

paint.net 4.3 alpha (build 7921)

This build fixes the bugs identified in the forum post for the previous version, and also optimizes plugin loading times by quite a bit. A performance issue was also fixed that was crippling the performance of most tools, which was related to using the garbage collector’s "low latency" mode while drawing. As it turns out, it totally broke performance, so it has been reverted.

The first time the app starts after install or update, it will load Shapes normally, convert them into a binary format, and then save them to a cache. Subsequent app starts will be much faster, as the time for loading the binary data from the cache is — at least on my system! — 16x faster. I’m pretty happy with this result Smile This should help a lot on systems that have a lot of shapes installed. Memory usage of the shapes is also greatly reduced.

For effects and file types, some of them need to be patched up at load time to be compatible with 4.3. If you remember from some of the previous alpha builds, I mentioned that I made a similar caching system for these types of plugins (as described above for Shapes). I later disabled it because I had concerns about its security. I’ve now re-enabled the cache, but only for plugins that are installed into the Documents folder — not for plugins installed into the Program Files location. So, if you want to ensure Paint.NET starts as fast as possible, I recommend moving your plugins to that location (e.g. Documents\paint.net App Files\FileTypes for FileTypes, and similar for Effects). The cache is also employed for additional plugin directories that are established using the process described here.

The plugin caches are now also enabled for the portable releases. A directory called AppCache will be created in the same directory as the app. It can be safely deleted at any time, even while the app is running.

Also note that the plugin caches must be rebuilt every time a new update is installed, so expect the first app start after installing an update to be more sluggish if you have many plugins or shapes installed. It won’t be any worse than 4.2.16, however.

Get the update

To get this update, make sure you have "Also check for pre-release (beta) versions" enabled in Settings, and then click on the Check Now button. (Unfortunately alpha/beta releases are not currently available for the Microsoft Store version of the app).

image.png

For direct download links, please visit the forum.

Changes since 4.3 alpha build 7918:

  • Improved performance of loading custom Shapes by 16x on 2nd and subsequent app starts
  • Fixed a crash when trying to save an image that does not support loading
  • Fixed a performance issue that was crippling performance while drawing with most tools

Enjoy!

paint.net 4.3 alpha (build 7918)

This build fixes 2 more bugs that were present in builds 7916 and 7917.

Get the update

To get this update, make sure you have "Also check for pre-release (beta) versions" enabled in Settings, and then click on the Check Now button. (Unfortunately alpha/beta releases are not currently available for the Microsoft Store version of the app).

image.png

For direct download links, please visit the forum.

Changes since 4.3 alpha build 7917:

  • Fixed a bug in the FileType plugin loader that resulted in any attempt to open or save images to crash the app. This would happen if a plugin existed with types decorated with attributes from assemblies that did not exist (e.g. from a unit testing framework).
  • Fixed a bug with tool cursors not switching to their "mouse down" forms

paint.net 4.3 alpha (build 7917)

This build fixes 3 bugs that were present in yesterday’s build 7916.

Get the update

To get this update, make sure you have "Also check for pre-release (beta) versions" enabled in Settings, and then click on the Check Now button. (Unfortunately alpha/beta releases are not currently available for the Microsoft Store version of the app).

image.png

For direct download links, please visit the forum.

Note that the offline installer may still need to download some prerequisites if you’re on a Windows 7 or 8.1 machine that is not up-to-date via Windows Update. You do not need to have .NET installed, as these builds use self-contained deployment.

Changes since 4.3 alpha build 7916: