paint.net 4.2.10 is now available

This small update fixes a few important bugs, most notably with installations that directly use the MSI file for deployment (e.g. AD/GPO).

If you’re using the Windows Store release, you should get the update automatically within the next 24 hours. You can also force an update check by following these instructions.

For the Classic release, you should be offered the update automatically within the next week or so. You can get the update sooner by going to ⚙ Settings → Updates → Check Now. You can also download and install it directly from the website.

Changes since 4.2.9:

  • Fixed: Installations that directly use the MSI (e.g. AD/GPO deployments) no longer need to run the repair process immediately after installation. Some important DLLs were not being updated because while their assembly version was different, their file version was unchanged, so Windows Installer incorrectly skipped over them. Click here for more information.
  • Fixed: Loading an image with an enormous photoshop:DocumentAncestors node in the XMP metadata will no longer hang the app
  • Fixed a rare crash in the auto-updater UI related to font initialization
  • Improved performance when clicking OK on an effect or adjustment dialog that has already completed part of its rendering

Enjoy!

paint.net 4.2.9 is now available

This updates improves performance and significantly reduces memory usage, adds two new translations, and fixes a number of small issues.

If you’re using the Windows Store release, you should get the update automatically within the next 24 hours. You can also force an update check by following these instructions.

For the Classic release, you should be offered the update automatically within the next week or so. You can get the update sooner by going to ⚙ Settings → Updates → Check Now. You can also download and install it directly from the website.

Changes since 4.2.8:

  • Reduced overall memory usage (commit size) by up to 1/3rd by eliminating the per-image scratch buffer
  • Greatly improved performance when finishing actions of most tools by employing a shared cache between the render and commit code paths
  • Reduced memory usage when working with many tools by consolidating homogenous tiles (those that are comprised of a single color value)
  • Significantly improved performance of most history actions (commit, undo, redo) by switching from NTFS compression to multithreaded LZ4 compression for history files
  • Significantly improved performance of undo/redo with very complex selections (e.g. from the Magic Wand tool)
  • Improved performance of Image -> Flatten (also affects flattening when saving)
  • Improved performance of the Invert Colors and Desaturate adjustments by disabling hardware acceleration for them (too much overhead in copying tiles to the GPU for such trivial rendering kernels)
  • Improved performance when saving by moving thumbnail rendering for the File -> Open Recent menu to a background thread
  • Reduced memory usage when printing, and removed a rare crash that was related to its use of the (now removed) scratch buffer
  • Improved performance of effect rendering when a complex selection is active (improved caching)
  • New: Added a "busy spinner" to the canvas when using the Magic Wand and Paint Bucket tools
  • New translation: Hebrew (HE)
  • New translation: Slovak (SK)
  • Fixed a really goofy crash that required drawing with the paintbrush and, without letting go of the mouse button, moving the mouse into the toolbar and then using the mouse wheel to change the brush width
  • Fixed a layout bug with the image list button
  • Fixed an error that prevented saving some images as JPEGs if they had EXIF Interop metadata (PropertyNotFoundException)
  • Fixed a crash when running on a CPU that supports AVX but with an OS that is configured to not support it (via bcdedit /set xsavedisable 1)
  • Fixed a crash when pressing the spacebar after switching to a tool but before it has received any mouse input events
  • Fixed a rare crash when opening the Levels adjustments with certain types of selections
  • Fixed a crash when checking for updates with an expired alpha/beta build
  • Fixed a crash (FileLoadException) when DLLs are not updated correctly by the updater
  • Updated WebPFileType plugin to version 1.3.2 (thanks @null54!)
  • Updated DDSFileTypePlus plugin to version 1.9.9. This adds support for X8B8G8R8 and R8G8B8 formats, and fixes a visual glitch when previewing cube maps in some formats. (thanks @null54!)

Enjoy!!

paint.net 4.2.9 beta build 7333

This release has been going smoothly so far with only 1 or 2 issues that have needed fixing, so I’m hopeful that a final public release will be achievable very soon (this week?). The performance improvements should really save a lot of time for everyone who uses the app a lot. For some, it’ll be strongly and immediately noticeable (large images, low-end systems). For others, it’ll be small savings that add up and compound over time, but still very worthwhile.

This beta build fixes one rare crash and adds 2 new translations, Hebrew and Slovak.

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 join the conversation over at the forum.

Changes since last week’s 4.2.9 alpha build:

  • Fixed a rare crash that could happen after performing various actions, due to transient history file locking by indexing or antivirus (this was a new crash for 4.2.9)
  • New translation: Hebrew (HE)
  • New translation: Slovak (SK)
  • Updated DDSFileTypePlus plugin to v1.9.9. This adds support for X8B8G8R8 and R8G8B8 formats, and fixes a visual glitch when previewing cube maps in some formats.

Enjoy!

paint.net 4.2.9 alpha build 7326

I’ve been working on 4.2.9 for the last month and a half, and really put some work into some big improvements for performance and memory usage. These improvements cut across almost everything you can do in the app, so having a lot of participation in the alpha and beta builds will be really important.

Memory usage is way down, especially when opening many images. Undo/redo should be a lot faster. Finishing/committing actions with most tools should be a lot faster. Effect rendering, particularly when you have a complex selection, should be much more responsive. A lot of these optimizations will scale with CPU core count (more faster CPU = more faster PDN), but should also show great improvements on low-end systems (e.g. dual core CPU, low-power laptop). It’s win-win!

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 join the conversation over at the forum.

Changes since 4.2.8:

  • Reduced overall memory usage (commit size) by up to 1/3rd by eliminating the use of and need for a per-image scratch buffer
  • Greatly improved performance when finishing actions of most tools by employing a shared cache between the render and commit code paths
  • Reduced memory usage when working with many tools by consolidating homogenous tiles (those that are comprised of a single pixel value)
  • Significantly improved performance of most history actions (commit, undo, redo) by switching from NTFS compression to multithreaded LZ4 compression for history files
  • Significantly improved performance of undo/redo with very complex selections (like from the Magic Wand tool)
  • Improved performance of Image -> Flatten (also affects flattening when saving)
  • Improved performance of the Invert Colors and Desaturate adjustments by disabling hardware acceleration for them (too much overhead in copying tiles to the GPU for such trivial rendering kernels)
  • Improved performance when saving by moving thumbnail rendering for the File -> Open Recent menu to a background thread
  • Reduced memory usage when printing, and removed a rare crash that would happen if the scratch buffer couldn’t be acquired
  • Added a "busy spinner" to the canvas when using the Magic Wand and Paint Bucket tools
  • Improved performance of effect rendering when a complex selection is active (improved caching)
  • Fixed a layout bug with the image list button
  • Fixed an error that prevented saving some images as JPEGs if they had EXIF Interop metadata (PropertyNotFoundException)
  • Fixed a crash when running on a CPU that supports AVX but with an OS that is configured to not support it (via bcdedit /set xsavedisable 1)
  • Fixed a crash when pressing the spacebar after switching to a tool but before it has received any mouse input events
  • Fixed a rare crash when opening the Levels adjustments with certain types of selections
  • Fixed a crash when checking for updates with an expired alpha/beta build
  • Fixed a crash (FileLoadException) when DLLs are not updated by the updater.
  • Updated WebPFileType plugin to version 1.3.2.0 (thanks @null54)

I am hoping/planning to push out the final release by the end of January. Enjoy!

paint.net 4.2.8 is now available

This small update fixes a few pressing bugs, particularly for touch and pen input.

If you’re using the Windows Store release, you should get the update automatically within the next 24 hours. You can also force an update check by following these instructions.

For the Classic release, you should be offered the update automatically within the next week or so. You can get the update sooner by going to ⚙ Settings → Updates → Check Now. You can also download and install it directly from the website.

Changes since 4.2.7:

  • Fixed: Pinch-to-zoom was not working when using a touch screen (regression in 4.2.6)
  • Fixed: Spacebar panning was not working when using a pen/stylus (regression in 4.2.6)
  • Fixed: EXIF metadata with non-ASCII characters is now preserved correctly
  • Fixed a crash that can happen when the Microsoft Store version of the app is closed for an update
  • Added /repair command-line argument, which will run PdnRepair.exe. This makes it easy to use Start -> Run -> paintdotnet:/repair so you don’t have to go fishing for the installation directory.

Enjoy!

paint.net 4.2.7 is now available

This is a hotfix that address a crash at startup that was happening on some systems.

If you’re using the Windows Store release, you should get the update automatically within the next 48 hours. You can also force an update check by following these instructions.

For the Classic release, you should be offered the update automatically within the next week or so. You can get the update sooner by going to ⚙ Settings → Updates → Check Now. You can also download and install it directly from the website.

Changes since 4.2.6:

  • Fixed a crash at startup (FileLoadException) due to 1) the stub for System.Runtime.dll not being updated, and 2) the rigid version binding policy that prevented the older version from working in its stead (which would’ve been fine in this case).

And, because this is a hotfix, here are the changes from 4.2.5:

  • Improved the input handling systems to use WM_POINTER, which enables glitch-free drawing when using a pen or stylus (e.g. Surface Pen, Wacom/Ugee tablet) (see here: https://forums.getpaint.net/topic/113173-the-first-5mm-of-a-freehand-line-are-straight-when-using-a-tablet/ ). This will also be the basis for adding pressure sensitivity in a future release (v4.3).
  • Added a "Native pointer input" setting if a "pointer" device is available (pen, tablet, touch screen). Disabling this will cause any pointer device to be emulated as a mouse, which may be more compatible but at the cost of smoothness. Pointer devices are listed in Settings -> Diagnostics.
  • Removed the "Fluid mouse input" setting because the use of GetMouseMovePointsEx() has been removed (it’s a very buggy and broken API). This finally fixes a number of weird issues related to erratic or "scribbly" drawing.
  • Improved performance of Move Selected Pixels, Shapes, and Gradient tools when releasing the mouse button at the end of drag-and-drop gesture. Previously, anything rendered between the last mouse "move" and "up" events was re-rendered, resulting in the appearance of a delay/lag.
  • Greatly improved performance of layer thumbnails when switching between images
  • Improved: The image list at the top can now be scrolled by clicking the arrow buttons and holding the mouse down, just like a regular scroll bar button. (Previously you had to click repeatedly). This improves usability, but was also noted as being important for accessibility.
  • Improved: Smooth scrolling animations have been removed from the image list and layers list due to them just not working very well.
  • Improved window chrome/theming when the app is running in Remote Desktop on Windows 10
  • Changed: The size of the default/initial image ("Untitled") is now scaled exactly by system DPI setting (previously scaled by integer/floor of DPI setting). So at 150% DPI scaling this image will now be 1200×900 instead of 800×600.
  • Fixed some high-DPI layout bugs with the Layer Properties dialog, while also preparing this UI for future additions
  • Fixed a crash (OutOfVideoMemoryException) on systems with hybrid GPU setups that are configured wrong. This seems to be a bug in Windows and DirectX. A "hybrid GPU" setup is an Intel iGPU or AMD APU paired with a discrete GPU in a laptop.
  • Improved handling of the dreaded "NoHardwareDeviceException" crash: The user will be notified of how to fix this. It happens only on 2nd generation Intel Core systems with NVIDIA "Optimus" GPUs (GeForce or Quadro) when the NVIDIA Control Panel is set to force apps (or just Paint.NET) to use the NVIDIA GPU. This is a bug in the NVIDIA driver and/or in DirectX.
  • Fixed images being pasted incorrectly from Outlook 2016/365. This is actually a bug in Outlook: it puts PNGs on the clipboard that are arbitrarily cropped and scaled for some reason, and specifies they are the preferred format to use when pasting. This completely boggles my mind, it’s just really weird, I can’t imagine why it’s done this way.
  • Fixed some clipboard image handling for plugins (regular Copy/Paste is unaffected)
  • Changed: SSE2 is now required for 32-bit/x86 systems (prevously, only SSE was required). See blog post: https://blog.getpaint.net/2019/10/14/paint-net-v4-2-6-will-require-sse2-on-32-bit-x86/
  • Updated bundled WebPFileType plugin to v1.3.1.0 (thanks @null54)
  • Updated bundled DDSFileTypePlus plugin to v1.9.8.0 (thanks @null54!)

paint.net 4.2.6 rollout suspended – 4.2.7 soon!

Just a quick note that I’ve removed 4.2.6 from the auto-updater because a lot of people are having problems with it crashing immediately after installation. I’m trying to get a 4.2.7 release out ASAP.

If you’re already on 4.2.6 and it’s working fine: great! You’ll be fine, no need to worry. This doesn’t seem to affect the Microsoft Store version either.

The problem seems to be that the local copy of the System.Runtime.dll stub was updated to a new version (4.1.2.0), but some systems are holding onto the old version instead (4.0.0.0). When the app needs to load it, the .NET runtime gets mad because it can’t find 4.1.2.0. Even though it’s just a stub that doesn’t do anything …

This is just a giant mess stemming from adding the System.Buffers nuget package in this version. All I wanted to do was use ArrayPool, but it brought along about 50 stub DLLs from .NET Core and it has caused a ton of versioning nonsense into the installation.

There also seems to be a small bug in the shell extension (which provides File Explorer thumbnails) that may be keeping this file locked, and another bug in the setup wizard that’s ignoring a flag indicating that a reboot is needed, and all 3 of these problems are causing quite the storm.

paint.net 4.2.6 is now available!

This update is focusing on some important fixes and performance improvements, and getting some infrastructure ready for future releases so that pens and tablets with pressure sensitivity can be fully supported (planned for v4.3).

If you’re using the Windows Store release, you should get the update automatically within the next 24 hours. You can also force an update check by following these instructions.

For the Classic release, you should be offered the update automatically within the next week or so. You can get the update sooner by going to ⚙ Settings → Updates → Check Now. You can also download and install it directly from the website.

Changes since 4.2.5:

  • Improved the input handling systems to use WM_POINTER, which enables glitch-free drawing when using a pen or stylus (e.g. Surface Pen, Wacom/Ugee tablet) (see here: https://forums.getpaint.net/topic/113173-the-first-5mm-of-a-freehand-line-are-straight-when-using-a-tablet/ ). This will also be the basis for adding pressure sensitivity in a future release (v4.3).
  • Added a "Native pointer input" setting if a "pointer" device is available (pen, tablet, touch screen). Disabling this will cause any pointer device to be emulated as a mouse, which may be more compatible but at the cost of smoothness. Pointer devices are listed in Settings -> Diagnostics.
  • Removed the "Fluid mouse input" setting because the use of GetMouseMovePointsEx() has been removed (it’s a very buggy and broken API). This finally fixes a number of weird issues related to erratic or "scribbly" drawing.
  • Improved performance of Move Selected Pixels, Shapes, and Gradient tools when releasing the mouse button at the end of drag-and-drop gesture. Previously, anything rendered between the last mouse "move" and "up" events was re-rendered, resulting in the appearance of a delay/lag.
  • Greatly improved performance of layer thumbnails when switching between images
  • Improved: The image list at the top can now be scrolled by clicking the arrow buttons and holding the mouse down, just like a regular scroll bar button. (Previously you had to click repeatedly). This improves usability, but was also noted as being important for accessibility.
  • Improved: Smooth scrolling animations have been removed from the image list and layers list due to them just not working very well.
  • Improved window chrome/theming when the app is running in Remote Desktop on Windows 10
  • Changed: The size of the default/initial image ("Untitled") is now scaled exactly by system DPI setting (previously scaled by integer/floor of DPI setting). So at 150% DPI scaling this image will now be 1200×900 instead of 800×600.
  • Fixed some high-DPI layout bugs with the Layer Properties dialog, while also preparing this UI for future additions
  • Fixed a crash (OutOfVideoMemoryException) on systems with hybrid GPU setups that are configured wrong. This seems to be a bug in Windows and DirectX. A "hybrid GPU" setup is an Intel iGPU or AMD APU paired with a discrete GPU in a laptop.
  • Improved handling of the dreaded "NoHardwareDeviceException" crash: The user will be notified of how to fix this. It happens only on 2nd generation Intel Core systems with NVIDIA "Optimus" GPUs (GeForce or Quadro) when the NVIDIA Control Panel is set to force apps (or just Paint.NET) to use the NVIDIA GPU. This is a bug in the NVIDIA driver and/or in DirectX.
  • Fixed images being pasted incorrectly from Outlook 2016/365. This is actually a bug in Outlook: it puts PNGs on the clipboard that are arbitrarily cropped and scaled for some reason, and specifies they are the preferred format to use when pasting. This completely boggles my mind, it’s just really weird, I can’t imagine why it’s done this way.
  • Fixed some clipboard image handling for plugins (regular Copy/Paste is unaffected)
  • Changed: SSE2 is now required for 32-bit/x86 systems (prevously, only SSE was required). See blog post: https://blog.getpaint.net/2019/10/14/paint-net-v4-2-6-will-require-sse2-on-32-bit-x86/
  • Updated bundled WebPFileType plugin to v1.3.1.0 (thanks @null54)
  • Updated bundled DDSFileTypePlus plugin to v1.9.8.0 (thanks @null54!)

Enjoy!

paint.net 4.2.6 beta build 7263

This release just graduated into beta, which means pretty much everything should be working the way it should, and translations have been updated. It should be a short path from here to the final release of 4.2.6, which means I can start working on the next big release, 4.3, which will focus on brushes and pens (some of the infrastructure for which is in this release!).

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 update directly at the forum.

Changes since 4.2.6 alpha build 4258:

  • Fixed: The ability to drag a selection while drawing it was not working. (Click-and-drag with the left button to draw, but before releasing the left button you may click-and-drag with the right button to move it around.) (This was a regression in 4.2.6.)
  • Improved: The image list at the top can now be scrolled by clicking the arrow buttons and holding the mouse down, just like a regular scroll bar button. (Previously you had to click repeatedly). This improves usability, but was also noted as being important for accessibility.
  • Improved: Smooth scrolling animations have been removed from the image list and layers list due to them just not working very well.

paint.net 4.2.6 alpha build 7258

This build should fix the mouse input and drawing issues that were happening when multiple monitors of different DPI settings were being used. (for example: https://forums.getpaint.net/topic/115494-paintnet-426-alpha-build-7256/?do=findComment&comment=564920)

On a technical note, I’m removing the use of the GetMouseMovePointsEx API because it has been nothing but trouble over the last 6 years. It was supposed to provide smoother mouse input that was less dependent on the performance of the system or app, but that hope has been completely squashed. I’m fed up with it, it’s just a completely broken API and I’ve wasted way too many hours and days of my life debugging it and trying to hunt down any shred of good documentation or sample code for it.

Microsoft broke GetMouseMovePointsEx in Windows 8 and they just haven’t bothered to notice it or fix it (it works great in Windows 7!). On top of that, the newer input system (WM_POINTER) has a method, GetPointerInfoHistory, that’s supposed to provide the same functionality … but it doesn’t! It only ever retrieves the most recent mouse event (history count is always 1). So if you call EnableMouseInPointer you can still never retrieve any mouse movement events that your app wasn’t fast enough to process. Thankfully Paint.NET processes mouse events fast enough that this really isn’t a problem, but someone is just asleep at the wheel over at Microsoft. Thankfully the WM_POINTER system seems to work fantastically well for pens, drawing tablets, and touch screens.

(The above technical rant is provided for the benefit of any other poor developers out there who happen to try and make use of the cursed GetMouseMovePointsEx API and who stumble across this through a Google search. Stay away! It’s broken! Like completely, utterly, maddeningly broken! You’ll go crazy trying to make it work!)

All this means that the "Fluid mouse input" setting has been removed from Settings. It is no longer applicable. We can all forget about it and sleep better now.

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 directly using the link over at the forum.

Changes since 4.2.6 alpha build 7256:

  • Fixed erratic and buggy mouse input handling when using multiple monitors with different DPI settings. The use of the GetMouseMovePointsEx API has been removed because it has been totally broken since Windows 8 except in increasingly narrow situations (single monitor, static DPI that never changes, not in a VM, no Remote Desktop, etc.).