paint.net 5.0 alpha (build 8361) is now available!

The first preview build of Paint.NET 5.0 is now available!

There’s a huge write-up with a ton of information, screenshots, and download links over on the forum. It was too much to convert into a blog post, so just head over there Smile

Advertisement

paint.net 4.3.8 beta build 8079

This update includes a new Layers -> Toggle Layer Visibility (keyboard shortcut: Ctrl + comma) command, some performance improvements, bug fixes, and a new IndirectUI control for plugins (FolderChooser).

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). Updates for 4.3.x will be released 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.7:

  • New: Layers -> Toggle Layer Visibility menu command (keyboard shortcut: Ctrl + comma)
  • Greatly improved performance for the Line/Curve and Shapes tools
  • Improved performance for the Move Selected Pixels tool when using Bicubic resampling
  • Fixed tooltips not going away when menu items are activated by the keyboard (Effects, Adjustments, and File -> Open Recent)
  • Added a FolderChooser control type for IndirectUI-based plugins (thanks @toe_head2001!)
  • Fixed compatibility for Ed Harvey’s FastFX PencilSketch effect plugin
  • Fixed a performance bug in the canvas renderer that was causing tiles to be copied to the GPU more often than necessary. This mostly affected performance when drawing or modifying selections, and when scrolling or zooming.
  • Fixed a small memory leak with the allocations made for Win32 synchronization primitives (critical sections and condition variables)
  • Updated the bundled AvifFileType plugin to verison 1.1.18.0, which fixes some issues with EXIF metadata handling. (thanks @null54!)
  • Updated the bundled WebPFileType plugin to version 1.3.11.0, which fixes some issues with EXIF metadata handling. (thanks @null54!)
  • Updated the bundled DDSFileTypePlus plugin to version 1.10.11.0, which adds support for DXGI_FORMAT_R32_FLOAT. This is used by Bethesda’s Creation Kit for Fallout 4. (thanks @null54!)

Enjoy!

paint.net 4.3.6 is now available

This is a hotfix for a crash in the box filter rendering kernel, which is used to generate mip-maps for the canvas when zoomed out.

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). I have started 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.5:

Since this is a hotfix, here’s what was in v4.3.5 compared to v4.3.4:

Enjoy!

paint.net 4.3 alpha (build 7894.40357)

This is a hotfix for 4.3 alpha build 4894, which was published yesterday.

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 4894:

  • Fixed the Magic Wand tool producing glitchy results when used with a combine mode
  • Fixed the PluginSupportInfoAttribute’s properties being read-only

paint.net 4.3 alpha (build 7894)

There’s quite a lot to like in this build. Primarily, I’ve spent some time optimizing the snot out of the Magic Wand and Paint Bucket tools. They are now immensely faster, which you’ll especially be able to notice when working with larger image. I’ve written about this in more detail over on Twitter: https://twitter.com/rickbrewPDN/status/1424902298367451137

For this update I’m also switching over to something called self-contained deployment. This means that installing .NET is no longer required, as all the necessary files are bundled with the app. You should not see any change in functionality, this is a "transparent" change. The download size and disk space requirements are much larger, but it simplifies a whole of things that have been problematic over the years. I’m not 100% sure I’m going to stick with this, but it’s something I’d like to keep as long as I don’t get some warning from my hosting provider about my bandwidth usage. Startup performance should be slightly (5%) improved as a result of tighter ahead-of-time compilation.

You’ll note, however, that the download link for the installer is quite small — only about 1.7MB — because I’m testing a new "web" installer. What you’re downloading here is a stub installer that will download the rest of the app and then install it. The reason for doing this now is that I need to make sure it gets some test coverage before I utilize it later for folks who will be updating from pre-4.3 to 4.3+. The web installer is also really important to make sure folks who’ve installed pre-4.3 on ARM64 will get the correct native build. Before, the x86/x64 version would be used on ARM64 and would run emulated, but now this will permit those devices to smoothly transition to the native ARM64 build.

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 7881:

  • Improved performance of the Magic Wand tool by a substantial amount overall
  • Improved performance of the Paint Bucket tool by a substantial amount overall
  • 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 reflected immediately.
  • Improved: Plugins are now loaded into isolated AssemblyLoadContexts, which improves stability and resiliency to various problems with versioning, loading dependencies, or incorrect installation.
  • Fixed a rendering bug in the Gradient Tool, first reported here: https://forums.getpaint.net/topic/118486-paintnet-43-alpha-build-7881/?do=findComment&comment=585139 (regression from 4.2.16)
  • Fixed a crash when trying to draw a fixed-size rectangle selection that was larger than the image
  • Fixed a crash with the Shapes dropdown, which was due to a bug in WinForms
  • 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
  • Changed: The requirement to have SSSE3 on x86/x64 has been reverted to just SSE2. However, CPUs without SSSE3 are no longer being optimized for and will run slower as a result.
  • Updated the bundled AvidFileType plugin to v1.1.15.0, courtesy of @null54, which includes support for multi-layer AVIF files. See the project’s GitHub Releases page for more information.

Here are the other changes that 4.3 has when compared to 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
  • Installation is much faster now due to no longer needing the "Optimizing performance for your system" stage (NGEN has been replaced with ReadyToRun via crossgen).
  • Portable ZIPs are now officially available, utilizing self-contained deployment, and do not require the installation of .NET 5. You must manually update to newer versions of the app, however.
  • Improved performance of most effects and other compute-intensive tasks by about 20% on average, due to .NET 5’s improved code generation
  • Improved: 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 Erase 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: Selection antialiasing quality is now better by way of using a 4×4 super sampling filter instead of 3×3. The code has also been optimized to use SSSE3 on x86/x64.
  • Improved: Performance should be significantly better on systems without HyperThreading (by reserving 1 core for the UI), and also a bit better on systems with it (by utilizing more of the logical cores)
  • 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 in Polar Inversion that was causing hangs
  • Improved performance of Polar Inversion by 3x, due to the aforementioned bug fix (and a little bit is due to .NET 5)
  • Fixed: There were some issues with zooming in/out using the keyboard, where the anchoring (centering) point was not calculated correctly, causing the canvas to drift in the wrong direction.
  • Fixed a bug when saving with "Auto Detect" bit-depth that 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/
  • Changed: A processor that supports SSSE3 (yes 3 S’s) is now required for x86/x64 systems (previously only SSE2 was required). All CPUs released since about 2006 (e.g. Core 2 Duo) support this.
  • Known Issue: Due to crashing, GPU accelerated effects (Gaussian Blur, Motion Blur, Radial Blur) on ARM64 will actually use the CPU for rendering.

paint.net 4.2.17 alpha build 7858–now using .NET 5!

Paint.NET has finally been migrated to .NET 5! If you’re not familiar, .NET 5 (also known as .NET “Core” 5.0) is the new version of .NET that replaces .NET “Framework” (of which no more new versions will be made). More info here: https://devblogs.microsoft.com/dotnet/introducing-net-5/

It was a very large effort to move Paint.NET over to .NET 5 over the last 2 months! Most of that effort went towards rebuilding from scratch how Paint.NET is built and packaged (installer, MSI, APPX, portable ZIPs), because the old solutions were showing their age and were no longer serviceable. The app itself required only minor changes to work on .NET 5.

You should not really see any difference in the app’s features or the way it behaves, although performance has improved. Sometimes substantially! Sadly there are some plugins that will no longer work, although I may be able to find fixes for some of them.

I will be releasing this via the built-in updater sometime later this week. For now, I want to start with a smaller audience, so you must download and install it manually. Just close the app, run the installer EXE inside the ZIP, and it will do everything for you (as usual):

The download link for the installer is available at the forum page about this release.

You may also download a portable version of the app, which is useful if you just want to try things out or are not yet ready to fully commit to the new version. .NET 5 is built-in, so there is no need to install it (the app is “self-contained”). The portable version of the app will save settings in a local JSON file instead of using the registry.

The downloads links for the portable ZIPs are available at the forum page about this release.

If you have an ARM64 device such as the Surface Pro X, you may also install the app. For the portable ZIPs, use the architecture appropriate for your operating system: x86 for Win10, or x64 for Win11. This is untested, so please report back with how well it works.

Changes:

  • The app has been migrated to .NET 5, and performance has been greatly improved as a result.
  • Installation is much faster now due to no longer needing the “Optimizing performance for your system” stage (NGEN has been replaced with ReadyToRun via crossgen).
  • Portable ZIPs are now officially available, utilizing self-contained deployment, and do not require the installation of .NET 5. You must manually update to newer versions of the app, however.
  • Improved performance of most effects and other compute-intensive tasks by about 20% on average, due to .NET 5’s improved code generation
  • Fixed a bug when saving with “Auto Detect” bit-depth that 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 a bug in Polar Inversion that was causing hangs
  • Improved performance of Polar Inversion by 3x, due to the aforementioned bug fix (and a little bit is due to .NET 5)
  • Updated the built-in AvifFileType plugin to v1.1.13.0 (courtesy of @null54). See the project’s GitHub Releases page for more information.

Known Issues:

  • If you have a lot of plugins installed, such that the Effects menu is too large for the screen and must be scrolled, the scroll indicator buttons (the up/down arrows) are a lot larger than they should be. This seems to be a bug in .NET 5.
  • Several of Ed Harvey’s popular plugins are blocked because they are not compatible with .NET 5. I may find a solution for this, but it may also require a new version of the plugin to be released.
    • Color Flip/Rotate
    • Threshold
    • Glass Blocks
    • Color Filter
    • Filtered Black and White
    • Single Hue
    • Color Tint
    • Vitrious
    • White Balance

paint.net 4.2.16 beta build 7772

Hot on the heels of 4.2.16 beta build 7765, this build fixes a new issue when saving images at 8-bit color depth if they have transparency (as reported here and in a few other posts: https://forums.getpaint.net/topic/118074-autodetect-bit-depth-on-saving-png-files-fails-on-beta-4216776543041/)

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 it directly on the forum.

Change log:

  • Fixed an error when trying to save images that have transparency at 8-bit color depth

paint.net 4.2.16 beta build 7765

Now that I’m getting back into the swing of things after having moved across the country (Bay Area -> back to Seattle area, finally!), it’s time for a new update :)

This release is mostly focused on fixing, improving, and optimizing the quantization code. This is used when you save an image at 8-bit or lower color depth. There have been a number of bugs that have plagued this over the years, including 1) the generated palette is way too small (e.g. for a black->red gradient, it’d be 64 colors instead of 256), 2) the generated palette is slightly too small (e.g. 252 colors instead of 256), 3) the precision of the colors would be biased in favor of those that are at the top of the image, 4) the palette has colors removed from it that shouldn’t have been (this plagues Auto-detect), and more recently 5) the generated palette, especially for a low color depth, is complete trash.

#1 was a result of a bug in the Octree code that goes all the way back to the MSDN article it was pulled from, https://docs.microsoft.com/en-us/previous-versions/dotnet/articles/aa479306(v=msdn.10)?redirectedfrom=MSDN . As it turns out, shifting right (via >>) by a negative amount results in 0 instead of a shift left. Maybe C works that way, but C# does not.

#2 was a result of the way that reduction/merging works in the Octree data structure. It can only merge an entire node’s children, meaning it can reduce 8 colors into 1, but never 8 colors into 2 through 7. This means it would undershoot the desired palette size as much as 6/7th of the time. I fixed that with a trick I learned at https://www.codeproject.com/Articles/109133/Octree-Color-Palette (search for the word "vomit" ).

#3 happens because the Octree code would reduce nodes in an order defined by how they were added to the octree. Since the image is processed top-to-bottom, this would thus favor colors that first appear at the top. I’ve fixed this by more evenly spreading out which leaf nodes are merged — those with lower frequencies are merged first, and if two colors have the same frequency then the ordering is deterministically pseudo-randomized by using the color’s hash code.

#4 was kind of a mix between 1, 2, and 5. There have been several reports of images that should be correctly auto-saving at 4-bit color depth (because of using <=16 colors), but colors are still trimmed. Auto-detect is strictly required to be lossless, and it has been failing at that. My new code for the Octree algorithm should fix this, but I’ve also added code to skip palette generation entirely if the desired color count is greater than the # of unique colors in the image (an obvious shortcut/fix, but the code was a bit snaky in terms of permitting this). This also means Median Cut will behave properly, because WIC’s code does not necessarily do this correctly either.

#5 was a result of switching from my Octree code to WIC’s Median Cut. As it turns out, Median Cut isn’t a good choice for a lot of images even when it’s correctly implemented. In addition to having some really bad bugs with large images that I’ve had to work around, WIC’s implementation also falls completely flat on its face when the palette size is small. Imagine a black->white gradient that gets bits of cyan and magenta sprinkled throughout. Ugh. I have retained the ability to use Median Cut, although Octree is the default.

I’ve also optimized these things to be a lot faster and use a lot less memory.

You can see all of this in effect if you save an image as a PNG, GIF, TIFF, or BMP at 8-bit, 4-bit, 2-bit, or 1-bit color depth. You can also use the new Effect -> Color -> Quantize effect to play around with it. It lets you specify an exact palette size instead of the bit-depth.

image.png

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 and install this build directly on the forum.

Change log:

  • New: Effect -> Color -> Quantize, which applies palette reduction to 256 colors or less, along with dithering. This is the same algorithm used when saving images at 8-bit color depth or lower.
  • Fixed and improved palette generation when saving at 8-bit color depth or less
  • Greatly optimized performance of palette generation and image quantization
  • Added option to choose between Octree (default) and Median Cut algorithms for palette quantization when saving at 8-bit color depth or less
  • Fixed a crash in Move tools when the selection was 0-width and/or 0-height
  • Added tooltips w/ shortcut keys to the Tools dropdown in the toolbar
  • Fixed IndirectUI ColorWheel rendering (thanks @toe_head2001!)
  • Fixed a crash in the Text tool when using Ctrl+(Left,Right,Backspace,Delete) (thanks @Bruce Bowyer-Smyth!)
  • Changed: New layers are now filled with #00000000 instead of #00FFFFFF
  • Fixed a crash when working with selections (OutOfMemoryException)
  • New: Effects can now access the Document’s DPI via EffectEnvironmentParameters.DocumentResolution
  • Fixed drawing of the color palette in the Colors window when using some non-standard DPI scaling settings (e.g. 1.15x)
  • Fixed a crash when using EdHarvey’s Threshold plugin
  • Fixed the return value from PdnRegion.GetBoundsInt() so it’s not anchored at (0,0) unless it should be
  • Fixed premultiplied-to-straight color conversion on some code paths (thanks @null54!)
  • Updated bundled AvifFileType plugin to v1.1.11.0, which includes performance optimizations and bug fixes. See its GitHub releases page for more info.

paint.net 4.2.15 beta build 7690

This release is going pretty smoothly! I just had to fix a few small things that were pointed out in the forum thread for the alpha release, and get the translations up-to-date.

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 and install this build directly on the forum.

Changes since 4.2.15 alpha build 7683:

paint.net 4.2.15 alpha build 7683

This is a small update that improves some quality-of-life issues, and fixes some important crashes due to mishandling of some non-fatal DirectX errors.

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 and install this build directly on the forum.

Changes since 4.2.14:

  • New: "Tolerance Alpha Mode" toggle button added to the toolbar for the Magic Wand, Paint Bucket, and Recolor tools. This permits switching the algorithm for color comparison between premultiplied (default) and straight. "Straight" will distinguish between transparent pixels with different color values, whereas premultiplied will see them as equivalent.
  • New: Holding Ctrl while using the Color Picker tool will sample from the merged image (vs. just the current layer)
  • New: The file name in the title bar will now have a prepended asterisk when it has unsaved changes
  • Changed: The image close ‘X’ button can now be clicked for images that are not currently active
  • Fixed: The Rectangle Select tool, when used to draw a constrained, fixed ratio, or fixed size selection, will now correctly clamp the rectangle to be within the canvas
  • Fixed: Layers -> Move Layer Up/Down/Top/Bottom was not working for images with fewer than 3 layers
  • Fixed: Edit -> Erase Selection will now fill with transparent black (#00000000) instead of transparent white (#00FFFFFF)
  • Fixed: Custom Shapes will now be displayed in a consistently sorted order
  • Fixed: ".pdnSave" ghost files should no longer linger when saving to the desktop. This was due to a bug in Windows and File Explorer.
  • Fixed crashes due to DXGI/Direct3D "lost device" or "device removed" errors that can happen for various reasons (dock/undock, driver update, low memory, etc.)
  • New: Plugins can now use the IArrayPoolService, a wrapper around .NET’s ArrayPool, to optimize their array allocations
  • Updated bundled AVIF FileType to v1.1.6. See the pdn-avif releases page on GitHub (https://github.com/0xC0000054/pdn-avif/releases) for more information.

Enjoy!