paint.net 5.1 beta (build 9038)

This update is chock full of bug fixes and is a big step toward the final/stable release, which I’m planning to coincide with the stable release of .NET 9 in November.

Change Log

Changes since 5.1 beta (build 9023):

  • Fixed: The canvas tile renderer was using an extraordinary amount of memory when zooming out on a large image, which would then cause crashes.
  • Fixed some rendering glitches in the Levels UI when resizing the window.
  • Fixed some rendering glitches in the Curves UI when switching between transfer tables (Luminosity vs. RGB).
  • Fixed some issues with the mouse cursor not being initialized correctly when performing certain operations, such as undo/redo or when drawing a line/curve. Instead of being a crosshair or hand, it would be the standard arrow cursor.
  • Fixed an input state bug that made it possible for thumbnails to stop working if focus was lost while holding down the mouse button. For example, pressing Ctrl+N (for File->New) while using the Move Selected Pixels tool.
  • Fixed the History window’s scrollbar (it was not drawing at all).
  • Fixed some flickering that could happen in the History window when switching between images.
  • Fixed some flickering in the toolbar that could happen when performing undo or redo operations.
  • Fixed an error in the Levels UI that was preventing the output gamma values from updating correctly.
  • Improved performance of Levels and Auto-Level, which should also significantly reduce the chance of them crashing on older Intel GPUs.
  • Fixed a rendering glitch that could happen if the window was being resized while Ctrl+Tab was held down to switch between images. Some images would have their canvas in a cropped state that would only go away if the window was resized again.
  • Changed the crash log format so that it is the same as that used for other in-app errors and Settings -> Diagnostics.

Download and Install

This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within Settings -> Updates, enable “Also check for pre-release (beta) versions of paint.net” and then click on the Check Now button. You can also use the links below to download an offline installer or portable ZIP.

image.png

You can also download the installer here (for any supported CPU and OS), which is also where you can find downloads for offline installers, portable ZIPs, and deployable MSIs.

paint.net 5.1 beta (build 9022)

This is a relatively light update in the sense that you shouldn’t “see” any big changes.

Under the hood, however, there are some big changes. The first is that Paint.NET is now running on .NET 9.0, which has a lot of performance improvements over .NET 8.0. You can read about them all here. Some of those improvements are quite impactful for Paint.NET, including those that target startup performance and exception handling performance. This also ensures that plugins can keep making use of the latest runtime, framework, libraries, and tools.

The other big under-the-hood change is that I’ve migrated the UI presentation system from DirectComposition (aka “DComp”) to Windows.UI.Composition (aka “WUC”). The use of DComp was new in PDN v5.1, but WUC is actually what Microsoft recommends for newer apps (Win10+) and I wanted to be aligned with that. I originally thought that WUC was built on top of DComp, but I recently learned that isn’t true — they’re both APIs that provide interfaces to DWM (Desktop Window Manager), but WUC is the newer API. This just sets things up for success in the future if PDN needs to use Windows’ composition APIs for something more substantial.

Change Log

Changes since 5.1 beta (build 9004):

  • Changed: Upgraded to use .NET 9.0 (RC1)
  • Changed: Migrated Direct2D presentation system from DirectComposition to Windows.UI.Composition
  • Fixed: Rotate/Zoom had really broken rendering with particular image sizes, such as 13830 x 7485 px (which was 4 tiles wide by 2 tiles tall)
  • Known Issue: Title bars of dialog boxes will sometimes start out as white and then fade to black, instead of just being black (bug in .NET 9.0 RC1, already fixed for 9.0 RC2)
  • Changed: Plugins may no longer use BinaryFormatter
  • Updated the bundled AVIF FileType to version 3.10.0. Thanks @null54!
  • Updated the bundled DDS FileType Plus to version 1.12.11. Thanks @null54

Download and Install

This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within Settings -> Updates, enable “Also check for pre-release (beta) versions of paint.net” and then click on the Check Now button. You can also use the links below to download an offline installer or portable ZIP.

image.png

You can also download the installer here (for any supported CPU and OS), which is also where you can find downloads for offline installers, portable ZIPs, and deployable MSIs.

paint.net 5.0.13 is now available

This is a small update that fixes some bugs, adds a new Latvian translation, and updates the bundled AvifFileType plugin.

Get the Update

There are two releases of Paint.NET:

  • Microsoft Store release (recommended)
  • Classic Desktop release
    • Download the installer from the website. 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 few days, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now.
    • Offline Installers and Portable ZIPs are available over on GitHub.

Change Log

Changes since 5.0.12:

paint.net 5.0.12 is now available

This is a small update that fixes a handful of bugs, and updates both the AvifFileType and WebPFileType bundled plugins to include support for loading the first frame of an animation (similar to how GIF works).

Get the Update

There are two releases of Paint.NET:

  • Microsoft Store release (recommended)
  • Classic Desktop release
    • Download the installer from the website. 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 few days, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now.
    • Offline Installers and Portable ZIPs are available over on GitHub.

Change Log

Changes since v5.0.11:

  • Fixed a silent crash that was preventing the app from opening when double-clicking an image in Explorer, due to a bug in .NET’s ProfileOptimization class
  • Fixed some canvas navigation keyboard shortcuts that have some overlap with the new tab movement shortcut keys (Ctrl+Shift+PageUp/PageDown)
  • Fixed a crash in the Move Selected Pixels tool when the GPU does not support Direct3D Feature Level 11
  • Fixed another rare crash when rapidly undoing changes made with the Move Selected Pixels tool
  • Fixed a few typos, inconsistencies, and bugs in some plugin APIs
  • Updated the bundled AvifFileType plugin to v1.1.27.0, which now supports loading the primary image of an animated/multi-frame AVIF (thanks @null54!)
  • Updated the bundled WebPFileType plugin to v1.3.21.0, which now supports loading the first frame of an animated WebP image instead of saying the file is not supported (thanks @null54!)

paint.net 5.0.11 is now available

This update has a handful of important bugfixes, and an updated DdsFileTypePlus plugin.

Get the Update

There are two releases of Paint.NET:

  • Microsoft Store release (recommended)
  • Classic Desktop release
    • Download the installer from the website. 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 few days, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now.
    • Offline Installers and Portable ZIPs are available over on GitHub.

Change Log

Changes since v5.0.10:

  • Fixed: If an image file (such as .png or .jpg) is actually a WebP image, the WebPFileType will be used for loading instead of WIC’s WebP codec (which doesn’t work correctly)
  • Fixed a crash when undoing brush strokes
  • Fixed a rare crash in the updater UI when exiting the app
  • Fixed a crash that was preventing CodeLab’s UI Preview functionality from working
  • Updated the bundled DdsFileTypePlus plugin to v1.12.8.0. It now supports DDS files from S.T.A.L.K.E.R.: Shadow of Chernobyl, and has fixed BC5 Signed saving (thanks @null54!)

paint.net 5.0.10 is now available

This update has a handful of small improvements and bugfixes, and many improvements and fixes for GPU effect plugin development.

Get the Update

There are two releases of Paint.NET:

  • Microsoft Store release (recommended)
  • Classic Desktop release
    • Download the installer from the website. 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 few days, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now.
    • Offline Installers and Portable ZIPs are available over on GitHub.

Change Log

Changes since v5.0.9:

  • New: Edit -> Paste now supports base64-encoded images, which enables copying images from Microsoft Teams (thanks @null54 for the implementation!)
  • Fixed a rare bug that would cause selection tools to not work until the image was closed and reopened
  • Fixed: All mouse cursors will now honor the Windows setting for adjusting the mouse pointer size
  • Fixed a rare crash when rapidly undoing multiple actions
  • New: Plugins can now access the built-in JPEG and PNG FileTypes through two new methods on IFileTypesService
  • New: The Paint.NET Plugin API Documentation website is now live at https://paintdotnet.github.io/apidocs/
  • Fixed: All of the custom Direct2D effects now have runtime metadata (DisplayName, Author, Category, Description), which is useful for a UI that lets the user browse them (e.g. node editor)
  • New: Added convenience constructors to many Direct2D effects so that they can be used without declaring a new local variable
  • New: Added GaussianBlurMapEffect and BokehBlurMapEffect for use by GpuEffect plugins. They enable the blur radius to be controlled per-pixel through the use of a second input image (the “map”)
  • New: Added a RandomNoiseEffect that GpuEffect plugins can make use of
  • Fixed various bugs with HlslBinaryFunctionEffect, HlslBinaryOperatorEffect, and HlslTernaryFunctionEffect (which can be used by GpuEffect plugins)
  • Added Distance and Dot to the list of HlslBinaryFunctions
  • Added Length and Mad (multiply-add) to the list of HlslTernaryFunctions
  • Fixed the Environment property’s runtime type when accessed from an EffectConfigForm (for BitmapEffects and GpuEffects with custom UIs)
  • Fixed UIScaleFactor’s methods for converting between DIPs and pixels
  • Fixed ability to work with EffectConfigForms in the Visual Studio WinForms designer
  • Updated the bundled AvifFileType to version 1.1.26 (thanks @null54!)
  • Updated the bundled DdsFileTypePlus to version 1.12.6 (thanks @null54!)
  • Updated the bundled WebPFileType to version 1.3.20. It now uses libwebp v1.3.2 which contains the fix for CVE-2023-4863/CVE-2023-5129 (thanks @null54!)

paint.net 5.0.9 is now available

This is a small update that fixes a few important bugs.

Get the Update

There are two releases of Paint.NET:

  • Microsoft Store release (recommended)
  • Classic Desktop release
    • Download the installer from the website. 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 few days, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now.
    • Offline Installers and Portable ZIPs are available over on GitHub.

Change Log

Changes since v5.0.8:

  • Fixed: When using Alt+Tab, the internal state of the Alt key could get ‘stuck’ when the Shapes or Line/Curve tool was active, causing the next shape or line/curve to be drawn from the center
  • Fixed: Sliders were not responding to the mouse wheel (regression in 5.0.8)
  • Fixed the DeviceEffect.Properties.Min/MaxInputCount properties, which were throwing an ArgumentException (for plugin authors)
  • Fixed a rare crash at app exit due to a race condition in the auto-updater
  • Fixed a rare crash when the system resumes from sleep mode, due to a race condition in DWM reporting whether composition is enabled
  • Fixed a rare crash when using copy+paste due to .NET Runtime issue #84994 https://github.com/dotnet/runtime/issues/84994
  • Updated the bundled DDSFileTypePlus plugin to v1.12.2.0, which fixes the inability to save on ARM64 systems (thanks @null54!)
  • Updated the bundled WebPFileType plugin to v1.3.19.0, which fixes the inability to save on ARM64 systems (thanks @null54!)

paint.net 5.0.8 is now available

The biggest visible change in this release are some touch-ups to the Colors window. The Primary/Secondary dropdown has been removed, and instead the color boxes themselves will indicate which is the active color. In addition, inconsistencies with left/right clicking for selecting colors have been ironed out. The Colors window will also remember whether it was expanded (More vs. Less) across app sessions.

image.png

Another notable change is that, by popular request, the key to hold down for centered shape drawing and uniform resizing has been changed from Ctrl to Alt. This ensures it won’t interfere with Ctrl + Mouse Wheel zooming.

Get the Update

There are two releases of Paint.NET:

  • Microsoft Store release (recommended)
  • Classic Desktop release
    • Download the installer from the website. 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 few days, but you can also get it immediately by going to ⚙ Settings -> Updates -> Check Now.
    • Offline Installers and Portable ZIPs are available over on GitHub.

Change Log

Changes since v5.0.7:

  • Improved: The primary/secondary dropdown in the Colors window has been removed. The active color is now indicated in the color box itself.
  • Improved: The Colors window will now remember whether it’s in the expanded state (More vs. Less).
  • Fixed: In the Colors window, left clicking in the color wheel or the color palette will always set the active color, and right clicking will always set the inactive color. This was not always consistent before.
  • Changed: The key for centered shape drawing and uniform resizing has been changed from Ctrl to Alt so that it does not collide with zooming with the mouse (Ctrl + Mouse Wheel)
  • Fixed: The keyboard shortcut for previous/next tab is now Ctrl + Page Up/Down, to match other applications
  • New: You can now use Ctrl + Shift + Page Up/Down to move the current tab left or right
  • Fixed: The printing UI is now run out-of-process, which should fix a slew of reliability problems (hangs, crashes)
  • Fixed: The “Add Color” button in the Colors window was often showing the wrong color
  • Fixed: Effects -> Noise -> Median was incorrectly causing transparent pixels (#00000000) to turn into slightly transparent, almost black (#01010101)
  • New: Primitive structs (e.g. RectInt32, Vector4Float) now implement IParsable<T> (for plugin developers)
  • Fixed: UnaryPixelOps.Invert now works correctly, which was broken in the 5.0 release (for plugin developers)
  • Updated the bundled DDSFileTypePlus plugin to version 1.12.1.0, which, which improves support for swizzled BC3/DXT5 normal maps (e.g. DOOM 3), and support for loading textures with an incorrect DDS_PIXELFORMAT size (e.g. FlatOut 2) (thanks @null54!)
  • Updated the bundled WebPFileType plugin to version 1.3.18.0 (thanks @null54!)

paint.net 5.0.8 beta build 8611

This is a hotfix for 5.0.8 beta (build 8610) that fixes a crash when adding layers. That build’s release notes are copied here for convenience:

The biggest visible change in this release are some touch-ups to the Colors window. The Primary/Secondary dropdown has been removed, and instead the color boxes themselves will indicate which is the active color. In addition, inconsistencies with left/right clicking for selecting colors have been ironed out. The Colors window will also remember whether it was expanded (More vs. Less) across app sessions.

image.png

This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within Settings -> Updates, enable “Also check for pre-release (beta) versions of paint.net” and then click on the Check Now button. You can also use the links below to download an offline installer or portable ZIP.

image.png

You can also download the installer here (for any supported CPU and OS). Offline installers, portable ZIPs, and deployable MSIs are available over on GitHub.

Changes since v5.0.7:

  • Improved: The primary/secondary dropdown in the Colors window has been removed. The active color is now indicated in the color rectangle itself.
  • Improved: The Colors window will now remember whether it’s in the expanded state
  • Fixed: In the Colors window, left clicking in the color wheel or the color palette will always set the active color, and right clicking will always set the inactive color. This was not always consistent before.
  • Changed: The key for centered shape drawing and uniform resizing has been changed from Ctrl to Alt so that it does not collide with zooming with the mouse (Ctrl + Mouse Wheel)
  • Fixed: The keyboard shortcut for previous/next tab is now Ctrl + Page Up/Down, to match other applications
  • New: You can now use Ctrl + Shift + Page Up/Down to move the current tab left or right
  • Fixed: The printing UI is now run out-of-process, which should fix a slew of reliability problems (hangs, crashes)
  • Fixed: The “Add Color” button in the Colors window was often showing the wrong color
  • Fixed: Effects -> Noise -> Median was incorrectly causing transparent pixels (#00000000) to turn into slightly transparent, almost black (#01010101)
  • New: Primitive structs (e.g. RectInt32, Vector4Float) now implement IParsable<T>
  • Fixed: UnaryPixelOps.Invert now works correctly (for plugin developers)
  • Updated the bundled DDSFileTypePlus plugin to version 1.12.1.0, which, which improves support for swizzled BC3/DXT5 normal maps (e.g. DOOM 3), and support for loading textures with an incorrect DDS_PIXELFORMAT size (e.g. FlatOut 2) (thanks @null54!)
  • Updated the bundled WebPFileType plugin to version 1.3.18.0 (thanks @null54!)

paint.net 5.0.8 beta (build 8610)

The biggest visible change in this release are some touch-ups to the Colors window. The Primary/Secondary dropdown has been removed, and instead the color boxes themselves will indicate which is the active color. In addition, inconsistencies with left/right clicking for selecting colors have been ironed out. The Colors window will also remember whether it was expanded (More vs. Less) across app sessions.

image.png

This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within Settings -> Updates, enable “Also check for pre-release (beta) versions of paint.net” and then click on the Check Now button. You can also use the links below to download an offline installer or portable ZIP.

image.png

You can also download the installer here (for any supported CPU and OS). Offline installers, portable ZIPs, and deployable MSIs are available over on GitHub.

Changes since v5.0.7:

  • Improved: The primary/secondary dropdown in the Colors window has been removed. The active color is now indicated in the color rectangle itself.
  • Improved: The Colors window will now remember whether it’s in the expanded state
  • Fixed: In the Colors window, left clicking in the color wheel or the color palette will always set the active color, and right clicking will always set the inactive color. This was not always consistent before.
  • Changed: The key for centered shape drawing and uniform resizing has been changed from Ctrl to Alt so that it does not collide with zooming with the mouse (Ctrl + Mouse Wheel)
  • Fixed: The keyboard shortcut for previous/next tab is now Ctrl + Page Up/Down, to match other applications
  • New: You can now use Ctrl + Shift + Page Up/Down to move the current tab left or right
  • Fixed: The printing UI is now run out-of-process, which should fix a slew of reliability problems (hangs, crashes)
  • Fixed: The “Add Color” button in the Colors window was often showing the wrong color
  • Fixed: Effects -> Noise -> Median was incorrectly causing transparent pixels (#00000000) to turn into slightly transparent, almost black (#01010101)
  • New: Primitive structs (e.g. RectInt32, Vector4Float) now implement IParsable<T>
  • Fixed: UnaryPixelOps.Invert now works correctly (for plugin developers)
  • Updated the bundled DDSFileTypePlus plugin to version 1.12.1.0, which, which improves support for swizzled BC3/DXT5 normal maps (e.g. DOOM 3), and support for loading textures with an incorrect DDS_PIXELFORMAT size (e.g. FlatOut 2) (thanks @null54!)
  • Updated the bundled WebPFileType plugin to version 1.3.18.0 (thanks @null54!)