This is a hotfix that fixes a plugin, @BoltBait‘s Text Fun Factory, that was broken in the previous beta build.
Change Log
Changes since 5.1 beta (build 9064):
- Fixed: @BoltBait‘s TextFunFactory plugin was not working on Windows 10 due to the lack of support for IDWriteFontFace6 (despite what Microsoft’s documentation states)
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.

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.
Dear dev, do you think it’s possible to include a proper JPEG XL file type support (as in reference implementation) in paint.net by default in the upcoming release? I’ve seen somebody’s plugin to handle this file type, but I’m not sure if I can trust it when it goes to quality (and it’s heavily outdated), and it crashes a lot. JXL provides much better compression than JPG does and it’s free. Just like paint.net, you know.
I do want to add JPEG XL support, but it certainly won’t be in the final/stable 5.1 release next month. The plugin you mention, if it’s by null54 (aka 0xC0000054), is the same author of the AVIF, DDS, and WebP plugins that are bundled with the app itself. It uses libjxl which has some teething issues, but I can’t really implement my own version of it (libjxl, that is) because these things are wildly complicated and I doubt I could do a better job (at least not within any reasonable timeframe). There is some hope in that the newest version of Windows 11, v24H2, seems to come with a JPEG XL codec for WIC (Windows Imaging Component). Many of PDN’s built-in file types already use WIC’s codecs: BMP, JPEG, JPEG XR, GIF, TIFF, PNG, and HEIC, so it would be fairly close to plug-and-play. However, in my testing I was not yet able to get it working.
So, JPEG XL is desired and planned, but not for 5.1. Hopefully for a follow-up 5.1.x release, optimistically sometime next year.
Thank you kindly for proper explanation and timeline details, mr. Rick. Yes, Windows 11 version 24H2 features JXL support and I can even set JXL image as a wallpaper. And yes again, I’m stuck with basic plugin implementation by null54 (aka 0xC0000054) at this time when it comes to paint.net. As plugin doesn’t get updated and crashes , I’m now using cjxl.exe to get JXL files from PNGs mastered with paint.net. I wish you luck with implementing native WIC handling of JXL in the future, as BMP+JPEG+JPEG XR+GIF+TIFF+PNG+HEIC work perfectly 365 days a year! I did produce like 2+ GB TIFF files with paint.net a while ago, went fine. The other thing regarding JXL I haven’t tested yet is if Windows 10 version 24H2 can handle JXL. I will report once I get this data. I’m happy to hear you’re excited with JPEG XL capabilities and find it to be a reasonable addition to paint.net.
I try to keep the software up to date.
I didn’t get a screen shot of the message when installing, inside the message was this..
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
Exception Text
PaintDotNet.Direct2D1.InvalidGraphConfigurationException (0x8899001E): A configuration error occurred in the graph. The graph may be incomplete, such as missing required inputs or transforms. If the graph is correctly structured, you may need to use a command list as a buffer for any inputs that are shared among effects and dynamic images. See the IDeviceContext.CreateBufferedImage extension method for more details. (Direct2D1Error.InvalidGraphConfiguration 0x8899001E) (PaintDotNet.Direct2D1.DrawingContext) (PaintDotNet.Controls.PdnBanner)
at PaintDotNet.Interop.ExceptionFactory.ThrowError(Int32 hr, String message, Exception innerEx) in D:srcpdnsrcWindowsInteropExceptionFactory.cs:line 51
at PaintDotNet.Direct2D1.D2D1DeviceContext6.EndDraw() in D:srcpdnsrcWindowsDirect2D1D2D1DeviceContext6.cs:line 356
at PaintDotNet.Direct2D1.DrawingContext.Dispose(Boolean disposing) in D:srcpdnsrcWindows.CoreDirect2D1DrawingContext.cs:line 509
at PaintDotNet.ComponentModel.RefTrackedObject.DisposeCore(Boolean disposing) in D:srcpdnsrcComponentModelComponentModelRefTrackedObject.cs:line 168
at PaintDotNet.ComponentModel.RefTrackedObject.FinalDisposeIf(Boolean dispose, Boolean disposing) in D:srcpdnsrcComponentModelComponentModelRefTrackedObject.cs:line 259
at PaintDotNet.ComponentModel.RefTrackedObject.ReleaseRef(Boolean disposing) in D:srcpdnsrcComponentModelComponentModelRefTrackedObject.cs:line 248
at PaintDotNet.ComponentModel.RefTrackedObject.Dispose() in D:srcpdnsrcComponentModelComponentModelRefTrackedObject.cs:line 158
at PaintDotNet.Disposable.StructuredUsing[T](T autoObject, Action
1 action) in D:srcpdnsrcComponentModelDisposable.cs:line 264 at PaintDotNet.Disposable.StructuredUsing[T](T autoObject, Action1 action) in D:srcpdnsrcComponentModelDisposable.cs:line 250at PaintDotNet.Controls.AdvancedDirect2DControl.OnRender(IDrawingContext dc, RectFloat clipRect) in D:srcpdnsrcFrameworkControlsAdvancedDirect2DControl.cs:line 567
at PaintDotNet.Controls.InternalDirect2DControl.OnRender(IDeviceContext deviceContext, RectFloat clipRect) in D:srcpdnsrcFrameworkControlsInternalDirect2DControl.cs:line 44
at PaintDotNet.Controls.Direct2DControlImpl.Render(RectInt32 clipRect) in D:srcpdnsrcFrameworkControlsDirect2DControlImpl.cs:line 1910
at PaintDotNet.Controls.Direct2DControlImpl.RelayGdiPaintImpl(IGdiPaintContext ctx) in D:srcpdnsrcFrameworkControlsDirect2DControlImpl.cs:line 1614
at PaintDotNet.Controls.Direct2DControlImpl.RelayGdiPaint(IGdiPaintContext ctx) in D:srcpdnsrcFrameworkControlsDirect2DControlImpl.cs:line 1376
at PaintDotNet.Controls.Direct2DControl.OnGdiPaint(IGdiPaintContext ctx) in D:srcpdnsrcFrameworkControlsDirect2DControl.cs:line 622
at PaintDotNet.Gdi.GdiControlImpl.OnWmPaint(Message& m) in D:srcpdnsrcWindows.FrameworkGdiGdiControlImpl.cs:line 236
at PaintDotNet.Input.PointerInputProcessor.RelayWndProc(Message& m) in D:srcpdnsrcWindows.FrameworkInputPointerInputProcessor.cs:line 111
at System.Windows.Forms.NativeWindow.Callback(HWND hWnd, MessageId msg, WPARAM wparam, LPARAM lparam)
I keep this machine updated and secure using the latest windows update.
Your software installed.
I think I figured out what was causing this. The next build should work better. Thanks!
No error message with”9070″
another rick