NOTE: This alpha build is not available via the in-app updater. You can use the download links below to get either the installer or the portable version of the app. I plan on enabling the in-app updater within the next few weeks once it's clear that it's ready for a larger audience.
Welcome to Paint.NET 5.0
! This is the first public alpha build of this large update which has many major performance improvements, new features including pressure sensitivity for pens and drawing tablets, and a brand new effect plugin system with GPU rendering support. Almost all of the built-in adjustments and effects now render using the GPU, greatly improving their performance and quality.
Development on this new version began after the release of v4.3 and has been proceeding at a breakneck pace for the last year. And now it's time to share it with all of you
Back by popular demand*, pressure sensitivity
is now supported, enabling you to draw beautiful, natural-looking brush strokes (see above). Support for the Windows "pointer" input system (aka "Windows Ink") is required. Most devices support this, including the Surface Pen and various drawing tablets from Wacom, UGEE, and more.
Path smoothing, sometimes called stabilization
, is now implemented (enabled by default in the toolbar):
There is a new spacing
property in the toolbar. The default is 15% which does a great job, but sometimes you need finer control. This also enables new styles of drawing, such as the following which was drawn with a spacing value of 200%:
The newly rewritten brush engine is supported by all of the brush tools: Paintbrush, Eraser, Clone Stamp, and Recolor. Support for more brush shapes and types, including custom brushes, will be making an appearance in a future update.
GPU, GPU, GPU!
Paint.NET, since v4.0, has already been using hardware accelerated rendering for drawing the canvas to the screen. In v4.1, GPU acceleration was added to a few effects (blurs, mostly). In v5.0, support for the GPU has been greatly expanded. More of the UI is now using using the GPU, including the Layers and History windows, the ruler, the image list at the top of the main windows, and the UI for the Curves and Levels adjustments. This improves performance, and also helps battery life on laptops.
In addition, (almost**) all adjustments and effects now use the GPU
, resulting in much higher performance by leveraging Direct2D's imaging and effects system
with pixel shaders implemented using Sergio Pedri's @sergiopedri
library. These effects are now running with full 32-bit floating point precision (128-bits per pixel), which greatly improves the quality of rendering and the accuracy of colors as they move through the processing pipeline.
Effect plugins can now use the GPU for rendering as well, including full access to Windows graphics libraries (Direct2D, DirectWrite, and Windows Imaging Component (WIC)). More on that later. (File Type plugins can also use these libraries, but GPU rendering is not supported there.)
The Move Selected Pixels
has been upgraded to use the GPU when the Bicubic
sampling option is selected. The performance of this was so good that it is now the default mode (unless you are using software rendering or an Intel HD/UHD GPU, in which case Bilinear is still the default). A new Anisotropic
sampling mode has been added, which also uses the GPU. Whether you use Bicubic or Anisotropic is up to personal taste; the former produces a sharper result, while the latter produces a smoother/softer result.
(Click for full-size image)
Configuration of GPU support is split into two sections: hardware acceleration for UI/canvas, which can be enabled or disabled, and selection of the GPU that is used for rendering
(tools, adjustments, and effects). By default, Paint.NET will use what Windows identifies as the "performance GPU" for rendering, which ensures you get the best performance on laptops that have both an integrated GPU ("iGPU") and a discrete GPU ("dGPU"). Previously, Paint.NET would only ever use the iGPU. The UI/canvas will always use what Windows identifies as the "default" GPU, which is usually the iGPU, and this helps ensure better battery life.
Apply Embedded Color Profile
Paint.NET does not have a Color Management System (CMS) like Photoshop, Krita, or The GIMP. I'm hoping to add that in a future update, but for now Image -> Apply Embedded Color Profile
is a pragmatic solution that will help you make your images look correct.
Paint.NET, since v4.2, does a great job at preserving image metadata, including color profiles. However, it does nothing with
the color profile. If you've ever opened an image and the colors looked wrong
inside the app and different outside of it (e.g. in your web browser), this is probably why. This command will convert the image to the sRGB color space and then remove the color profile metadata, enabling you to make edits while seeing the image in the way that it was meant to be seen.
Before and after example: (image source
Image -> Resize Improvements
Image -> Resize
has been updated with new resampling modes: Adaptive
. The Bicubic and Bilinear modes have been updated with improved quality, while the old implementation of Bilinear is now called Bilinear (Low Quality)
and is akin to linear filtering in 3D graphics engines (only 4 samples per output pixel). Other than Bilinear (Low Quality), Nearest Neighbor, and Fant, these are all powered by Clinton Ingram
library. It produces extremely
high quality results, and is also ultrafast.
Please note that the Super Sampling mode has been removed. The Adaptive mode produces superior quality, and should be used instead.
There are a handful of new adjustments in this release: Exposure
, Highlights & Shadows
, and Temperature & Tint.
These are staples of photo editing that you have previously needed to install plugins for.
In addition, the Sepia
adjustment has been improved with an Intensity slider. A value of 0 produces grayscale, 50 is equivalent to previous versions of Paint.NET, and 100 is much more saturated.
There's a new Straighten
effect, located in the Effects -> Photo
submenu, which makes it easy to rotate and automatically zoom an image so that it fits within the canvas without any transparency creeping in along the edges:
There's now a built-in Drop Shadow
effect, available in the Effects -> Object
submenu. With the new Direct2D GPU image processing system, this was very easy to implement, and the performance is fantastic:
Bokeh Blur Effect
Lastly, Paint.NET now has a very high-quality Bokeh
blur effect! Similar to the older Unfocus blur effect, this simulates the aesthetic quality of the blur produced by out-of-focus parts of an image
. Developed in collaboration with Sergio Pedri @sergiopedri
and Mike Pound (as seen on the Computerphile YouTube channel
, like this one about Complex Bokeh Blurs
), this version of Bokeh has a Quality slider that goes up to 10 instead of the usual 6 that you may have seen in other implementations such as ImageSharp's
(further details available on GitHub
). This produces an extremely high quality result that eliminates almost all fringing artifacts, even on images with a large dynamic range and a lot of contrasting edges. Be sure to crank the quality up when you're also increasing the Gamma property, but be warned: it's a bit of a GPU killer!*** This is available in the Effects -> Blurs
New Effect Plugin System
There's a brand new, fully modernized system for effect plugins to use. The old system still works, and older plugins are still compatible. However, the new system has a lot of benefits and should be the basis for any new effect plugins.
The biggest new feature is hardware accelerated GPU rendering using Direct2D
, its effects system
, and pixel shaders. The base class for this is GpuEffect
, although most plugins will want to use GpuImageEffect
(or PropertyBasedGpuImageEffect to leverage IndirectUI) in order to best make use of the graph-based ("node-based") effects and image processing system. There is also GpuDrawingEffect for when you want to issue imperative drawing commands (geometry, text, etc.). If you want to see how to work with all of this, I have written some sample plugins and the source code is available on GitHub.
On the CPU side, BitmapEffect
is the replacement for the "classic" Effect
class, and has some goodies of its own including expanded pixel format support: you can now read the image and its layers, and produce your output, in the pixel format of your choice including BGRA32, PBGRA32, RGBA64, or even CMYK32. Anything other than BGRA32 will eventually be converted back to BGRA32, but for now this enables you to more easily perform rendering at higher precision. Eventually, layers themselves will support these other pixel formats, and this will ensure that your effect is able to read and render at native precision.
Effect plugins can now access all layers of the current image.
This is a big one! In addition, there's also the ability to retrieve a composite bitmap of the whole image (all layers blended together).
Effect plugins can now access the image's metadata
, including EXIF, XMP, and IPTC (thanks @null54
for the IPTC support!). This is already being used in an update for @null54
Effect plugins can now render outside of the active selection
by using the DisableSelectionClipping
rendering flag. This makes it possible to implement effects like drop shadows that are drawn around
the selection, not just inside of it.
Effect plugins can now add tabs to their UI!
IndirectUI-based plugins (e.g. PropertyBasedGpuImageEffect
) can now add tabs to their UI in arbitrary configurations. @BoltBait
has been using this a lot in his updated plugin pack
, and has written a tutorial
on how to use it in your own plugins. It's also possible, in your rendering code, to know which
tab is active, which is useful when you want to render decorations that you don't include in the final rendering (you'd have a "Finish" tab with any final configuration properties). "Classic" effects (deriving from PropertyBasedEffect
) can also use tabs.
There's a new Label
control which you can use to add text that isn't tied to a property, or even just for adding some whitespace. There's a new ShowHeaderLine
property which you can use to remove the horizontal line from the property's header (most of the built-in effects now use this). Drop-down controls can also set Multiline
to false so that the label and the dropdown are drawn on the same line.
Here's a screenshot from @BoltBait
's updated plugin pack, which makes great use of tabs and other new IndirectUI features:
Effects with custom UI (not IndirectUI-based) can use Direct2DControl
to create custom controls using Direct2D, including support for hardware accelerated rendering on the GPU. There is also a Direct2DPictureBox
control that you can use to display a static bitmap and render additional content above or below it.
Improved and Updated Effects
Many of the existing effects have been improved and updated, in addition to all being run on the GPU now:
- Layers -> Rotate / Zoom, technically a distortion effect, now has a Quality slider, a Sampling property, and redone tiling capability.
- The Tiling checkbox has been replaced with a Tiling Mode dropdown where you can choose between Transparent, Wrap, or Mirror.
- Setting the Sampling property to Nearest Neighbor, while also zooming in, produces a pixelated and antialiased appearance.
- Effects -> Blurs -> Gaussian Blur has an increased range for its radius property which can now be specified in 0.1 pixel increments. It now also has a Gamma property and a Quality slider.
- The Gamma property can be used to increase the prominence of brighter regions of the image. Values less than 1 produce a strange color bleeding effect that can be fun.
- The quality level ranges from 1 to 4. The first 3 correspond to the optimization property of Direct2D's Gaussian Blur effect, while the 4th level is a custom implementation that renders at an obscenely high level of quality and is intended for use with a raised Gamma value.
- Previous versions of Paint.NET (v4.1 - v4.3) always rendered equivalently to a quality value of 3.
- Warning: the 4th quality level is a GPU killer*** -- even the fastest GPUs will struggle with this one!
- Effects -> Blurs -> Motion Blur now has an Edge Mode property to control how pixel samples outside of the image are determined.
- Effects -> Blurs -> Radial Blur has improved rendering quality, and its quality slider can now be set between 1.0 and 8.0 in steps of 0.1.
- Effects -> Blurs -> Zoom Blur has improved rendering quality and a Focus property to control the balance between the foreground and background. It now also has a quality slider thar can be set between 1.0 and 8.0 in steps of 0.1.
- Effects -> Distort -> Bulge now has an Edge Behavior property and a Quality slider.
- Effects -> Distort -> Dents now has an Angle property, and its Quality slider now goes up to 8 instead of 5.
- Effects -> Distort -> Frosted Glass now has a Diffusion property and a Randomize button. Its Quality slider now also goes up to 8 instead of 5.
- The Diffusion property controls how pixels are distributed between the Minimum and Maximum Scatter Radius. Lower values will distribute pixels closer to the minimum radius, a value of 1.0 (the default) will evenly distribute pixels, and higher values will distribute pixels closer to the maximum radius.
- Previously, the randomization would be reset every time you changed one of the property sliders. Now you can modify the effect in a more stable way and only re-randomize when you want to.
- Effects -> Distort -> Pixelate now lets you specify a Scale Down and a Scale Up mode (pixelation is implemented by first scaling the image down, and then scaling it back up). This allows you to fine-tune the look of the effect for what you want to achieve.
- Effects -> Distort -> Polar Inversion is just a lot faster now that it's running on the GPU! Its Quality slider now also goes up to 8 instead of 5.
- Effects -> Distort -> Tile Reflection now has an Edge Behavior property, which can produce some really interesting results ... Its Quality slider now also goes up to 8 instead of 5.
- Effects -> Noise -> Add Noise now has a Randomize button. It will not re-randomize on every property change like it used to.
- Effects -> Photo -> Sharpen was completely rewritten to produce much better results. It now has a Threshold slider.
- Effects -> Render -> Clouds now has a large number of additional blend modes.
- Effects -> Render -> Julia Fractal and Mandelbrot Fractal are immensely faster now that they're running on the GPU. Depending on your CPU and GPU, the difference can be 30x or even 100x.
- You can now also choose a Blend Mode for these effects.
- Effects -> Render -> Turbulence now has a Blend Mode dropdown instead of a Blend checkbox.
- Effects -> Stylize -> Edge Detect has been completely rewritten. Instead of an Angle property, it now has Strength and Blurring sliders, an Algorithm dropdown (Sobel or Prewitt), and an Overlay Edges checkbox.
There are a lot of smaller changes throughout the app as well:
- The Line/Curve tool has higher quality antialiasing, and a new Straight mode (in addition to Spline and Bezier).
- The Shapes tool has higher quality antialiasing as well.
- The brightness of the transparency checkerboard can now be configured in Settings.
- Thumbnails in the Layers window have been made larger by 20%, making them easier to see at a glance.
- IPTC metadata is now preserved. Plugins can also read/write IPTC metadata. Thanks to @null54 for implementing this!
- You can now click-and-hold on +/- buttons in the toolbar instead of repeatedly clicking on them.
- The selection is now rendered using the GPU, which helps with both performance and battery life.
- Effects now run at a higher, smoother framerate. Previously the screen was updated at a fixed 20 frames-per-second, but now these updates are done as soon as possible. On a fast system with a high-refresh rate monitor you will really see the difference.
- On non-English systems, Paint.NET will attempt to auto-localize the submenu names that effect plugins specify. For example: an Italian user will now see just a "Sfocature" sub-menu instead of both "Sfocature" and "Blurs".
- 32-bit CMYK images are now correctly imported. They are transformed to 32-bit BGRA sRGB and the color profile is removed. Thanks to Clinton Ingram @saucecontrol for suggesting and consulting on this.
- There has been significant optimization through the rendering engine to reduce and remove transient allocations. Most rendering code is now able to run completely free of allocations. The whole app feels smoother! (When I've run v4.3.12 and v5.0 side-by-side, the new version was noticeably smoother at updating the canvas.)
- The app has been updated to run on .NET 7, and all legacy C++/CLI code has been ported to C# with the help of Tanner Gooding's excellent TerraFX.Interop.Windows library.
- Windows 10 v1809+ or Windows 11
- NOTE: Windows 8.1 and Windows 7 SP1 are no longer supported.
- 64-bit CPU and 64-bit version of Windows
- Both Intel/AMD x64 and ARM64 are natively supported.
- NOTE: 32-bit x86 is no longer supported.
- A pen or drawing tablet that supports Windows Ink
- A CPU that supports SSE4.2, which is almost all CPUs released since 2011.
- A discrete GPU such as an NVIDIA GeForce, AMD Radeon, or Intel Arc
- or an AMD Radeon APU (a type of integrated GPU)
- or an Intel Iris Plus or Iris Xe integrated GPU
- The GPU must support Direct3D 11. Otherwise the CPU will be used for rendering, which will have poor performance.
- Use of an Intel CPU with an Intel "HD" or "UHD" iGPU works fine but will probably not show much, if any, performance improvement over previous versions of Paint.NET (which used the CPU for most rendering). The default quality used across the app (e.g. in distortion effects, and the Move Selected Pixels tool) will be automatically lowered to compensate.
Offline installers, portable ZIPs, and deployable MSIs are available over on GitHub
. The "web installer" will be available at a later date.
Here are direct download links for convenience:
* Pressure sensitivity was removed in v3.5, back in 2009, due to various technical issues with its implementation and lack of suitable hardware to test on.
** The only effects/adjustments that do not yet run on the GPU are: Auto-Level, Curves, Levels, Oil Painting, Surface Blur, Unfocus, Quantize, Median, Reduce Noise, Red Eye Removal, and Outline
*** Not literally. It will not damage your GPU, it just requires a lot of processing power.