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
- You can purchase it here. This helps fund development and is an alternative or supplement to sending in a donation.
- If you already have it installed, the update should happen automatically within the next day or two. To get the update immediately, you can follow the instructions listed here.
- 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 v184.108.40.206, 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 v220.127.116.11, 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 v18.104.22.168, 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.
28 thoughts on “paint.net 4.3 is now available”
You should have bumped the version number to 5.0. Paint.NET 5.0, running on .NET 5.0.
Web installers, though… They are annoying. The involvement of a web installer means that Instead of downloading the whole package in one go, I have to download them in two stages: (1) Download a disposable Web installer and (2) download the actual bytes using the disposable web installer.
I download the offline installer with my highly optimized download manager. The web installer, however, has to download the same number of bytes using its own poorly developed downloader, like WebClient or BITS. Finally, I can use the offline installer to install on multiple computers and archive them, in case I had to reinstall Windows.
I didn’t bump the version to 5.0 because this is an infrastructure/platform update. For most folks, they would’ve installed this and not seen much of a difference. The 5.0 stamp is being saved for a big update down the road. (I really wish people would stop telling me how to version my app 🙄)
Maybe web installers are annoying for you, but you work around them just fine because that’s your preference. For many other scenarios they are quite important. But I’m providing offline installers in plain view, so I don’t know why you’re complaining about it.
You piqued my interest.
Definitely not complaining. This is the 2010s human way of showing we read what you wrote and care about your work. We can’t even say “thanks” anymore because the spam filter eats those. You know how bots post spam: A message consisting of “thanks” plus a link to a shady website that gives you Coronamalware.
Huge job, congrats!
Rick! Congrats on a massive update! I’m currently moving my 4.7 Framework work project to .Net 5 so I feel your pain! This is no small undertaking! I’ve been a long time user and have paid a couple of different times because I use it enough! Thanks so much for a great product
I’m sad to see that I am still having issues with the program icons (file association icon in details view or file info window), it shows up as a bitmap icon in Windows, but not the usual Paint.NET icon that I usually see. I first had this issue during the pre-release, and I am still experiencing this issue. Older versions (4.2x) still work fine.
I’ll be fixing this for 4.3.1, which I’ll be pushing out soon. It’s only a cosmetic glitch, thankfully no real functionality is affected.
when you enter the tools section in the settings, the program freezes for the first 20 seconds, after it starts working, the feeling is that in this section 5-10 fps when scrolling, friezes are also visible.
I’ve seen this happen if you have many older plugins installed, and usually when there’s been a recent or pending Windows Update. Restarting seems to help. Make sure to move your plugins into the Documents location (as opposed to having them in Program Files) as described at https://www.getpaint.net/doc/latest/InstallPlugins.html
I have the usual version of the program and the plugins in the documents folder are not connected, but if you remove the plugins, the hang remains, by the way, the plugins are old, yes.
And I only have 2 plugins
If you delete plugins
You can notice even by opening the settings, for example, if the Interface section is selected, everything opens instantly, but if you select the Tools section, the settings open for about 10 seconds. So I don’t think that plugins affect this. By the way, I have Windows updated to the latest patch,
You can get acquainted with this in this video,
You’re encoding video in the background, so of course things will be slower. Pause the video encoding and see how it works then.
I would not record a video to show what it is, even without recording the screen, the settings open slower if the tools section is selected
The Tools section of Settings is just slow at opening, even on my Ryzen 5950X (5-6 seconds). I haven’t had the opportunity to optimize its performance. It’s thankfully harmless.
This is an amazing tool. Thanks very much.
For whatever reason, this update broke all external file-opening for me.
To clarify: I can open files within the program. Opening from an Explorer window (either with or without the program already open) does nothing. Well, it opens the program if it isn’t already… but doesn’t load the file.
I’m pushing a 4.3.1 update shortly, please try it and see if this is now fixed. (it should be)
Would it be possible for you to distribute the exe files directly instead of putting them inside of a zip folder?
I tried that a long time ago and it’s actually a bad idea because it makes it more difficult to detect a corrupted download.
Congrats on the big update! I don’t edit large or complex enough images that I will see a change in performce (it will only be a matter of milliseconds at best), but I’m glad to hear the inner plumbing is getting a needed upgrade! After the incoming upgrade to .NET 6 that you mentioned, I’ll be looking forward to new features being added, like multiple (grouped) layer selection!
Hi, this is an awesome tool and I love that you’re improving it so much. One feature I’ve been waiting a while for is pressure sensitivity for graphics tablets with a stylus. Is there any news about this?
Yes, Rick has commented about this on the forum post for popular new features here: https://forums.getpaint.net/topic/2940-popular-feature-requests/
I’ll copy-paste his quote here:
“Tablet pressure sensitivity — This was removed in v3.5. I’m hoping to add it back in, possibly via a plugin, but I do not have an ETA. Might be possible as a plugin in 4.0, and then built-in for 4.x. Update: Planned for inclusion in upcoming 4.3 release.”
Please release a version without bundled .NET framework. I already have .net framework 4, .net core 2, 3, .net 5, 6 in my computer.
Comments are closed.