I wonder if you could work around this by expanding the canvas width and height by 2px (using Image->Canvas Size and the center anchor), and then. the inverse when you’re done with the plug-in? It’s cumbersome but would at least allow you to avoid using an older version of the app, and give @BoltBait time to look into this
Here's what it produces on my system though. Not all of it is needed for the thumbnail handler, such as the entries for the "protocol" and RegisteredCapabilities. None of it would be harmful, however. All strings are surrounded in double-quotes, so if you see a string with double-double quotes like ""this"" that just means that the string added to the registry is actually "this". There's no other escaping or formatting for the strings beyond that.
6/5/2023 7:52:45 AM - RegistryHandler::Register
6/5/2023 7:52:45 AM - SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0)
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\(Default) = "paint.net Image"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\FriendlyTypeName = "paint.net Image"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\CurVer\(Default) = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\DefaultIcon\(Default) = "C:\Program Files\paint.net\paintdotnet.exe,0"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\shell\edit\command\(Default) = ""C:\Program Files\paint.net\paintdotnet.exe" "%1""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\shell\open\command\(Default) = ""C:\Program Files\paint.net\paintdotnet.exe" "%1""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\shell\print\command\(Default) = ""C:\Program Files\paint.net\paintdotnet.exe" "print:%1""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paintdotnet\(Default) = "URL:paint.net"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paintdotnet\URL Protocol = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paintdotnet\DefaultIcon\(Default) = "C:\Program Files\paint.net\paintdotnet.exe,0"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paintdotnet\shell\open\command\(Default) = ""C:\Program Files\paint.net\paintdotnet.exe" %1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\CLSID\{FBF113F1-D7C8-477C-A23A-E600E7937E11}\(Default) = "paint.net Thumbnail Provider"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\CLSID\{FBF113F1-D7C8-477C-A23A-E600E7937E11}\InprocServer32\(Default) = "C:\Program Files\paint.net\PaintDotNet.ShellExtension.x64.dll"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\CLSID\{FBF113F1-D7C8-477C-A23A-E600E7937E11}\InprocServer32\ThreadingModel = "Apartment"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\ShellEx\{E357FCCD-A995-4576-B01F-234630154E96}\(Default) = "{FBF113F1-D7C8-477C-A23A-E600E7937E11}"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.ThumbnailProvider\CLSID\(Default) = "{FBF113F1-D7C8-477C-A23A-E600E7937E11}"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.ThumbnailProvider\CurVer\(Default) = "paint.net.ThumbnailProvider.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.ThumbnailProvider.1\CLSID\(Default) = "{FBF113F1-D7C8-477C-A23A-E600E7937E11}"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.pdn\ShellEx\{E357FCCD-A995-4576-B01F-234630154E96}\(Default) = "{FBF113F1-D7C8-477C-A23A-E600E7937E11}"
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\RegisteredApplications\paint.net = "Software\paint.net\Capabilities"
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\ApplicationName = "paint.net"
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\ApplicationDescription = "paint.net allows you to create and edit images and photographs using a wide array of tools, adjustments, and effects."
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\paintdotnet.exe\(Default) = "C:\Program Files\paint.net\paintdotnet.exe"
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\paintdotnet.exe\SupportedProtocols = "paintdotnet"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\shell\edit\command\(Default) = ""C:\Program Files\paint.net\paintdotnet.exe" "%1""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\FriendlyAppName = "paint.net"
6/5/2023 7:52:45 AM - registering .pdn
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.pdn = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.pdn\(Default) = "paint.net.1"
6/5/2023 7:52:45 AM - registry value did not exist: HKEY_CLASSES_ROOT\.pdn\PerceivedType
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.pdn\PerceivedType = "image"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.pdn = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.pdn\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .avif
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.avif = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.avif = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.avif\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .bmp
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.bmp = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.bmp = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.bmp\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .dib
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.dib = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.dib = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.dib\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .dds
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.dds = "paint.net.1"
6/5/2023 7:52:45 AM - registry value retrieved: HKEY_CLASSES_ROOT\.dds\PerceivedType = "image"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.dds = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.dds\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .gif
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.gif = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.gif = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.gif\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .heic
6/5/2023 7:52:45 AM - registry value retrieved: HKEY_CLASSES_ROOT\CLSID\{E9A4A80A-44FE-4DE4-8971-7150B10A5199}\InprocServer32\(Default) = "C:\WINDOWS\system32\msheif.dll"
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.heic = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.heic = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.heic\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .jfif
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.jfif = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.jfif = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.jfif\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .jpe
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.jpe = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.jpe = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.jpe\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .jpeg
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.jpeg = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.jpeg = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.jpeg\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .jpg
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.jpg = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.jpg = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.jpg\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .jxr
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.jxr = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.jxr = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.jxr\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .png
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.png = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.png = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.png\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .rle
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.rle = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.rle = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.rle\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .tga
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.tga = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.tga = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.tga\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .tif
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.tif = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.tif = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.tif\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .tiff
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.tiff = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.tiff = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.tiff\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .wdp
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.wdp = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.wdp = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.wdp\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .wmp
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.wmp = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.wmp = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.wmp\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - registering .webp
6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.webp = "paint.net.1"
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.webp = ""
6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.webp\OpenWithProgids\paint.net.1 = ""
6/5/2023 7:52:45 AM - SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0)
This sounds like a GPU driver bug. Running Sharpen on a 40K x 24K image works perfectly fine for me on a GeForce 4090.
Make sure your GPU drivers are up-to-date. Make sure you are completely caught up on Windows Updates.
Also, are you sure you're on 5.0.3 beta? The latest beta is for 5.0.4.
In a pinch, you can go into the app settings (gear icon at top right of main window), then Graphics, and then change the "rendering device" to the CPU. In general this is a very bad thing to do because the CPU is extremely slow for rendering many effects (esp. distortion effects). So you should only do this temporarily when/if you need it.
If the app is running slower when you add more layers, it's probably because you don't have enough memory to properly work with an image of that size. The minimum requirements are only for installing the app and doing basic image editing.
For example, if you have 4GB, you won't be able to work with huge images with a lot of layers -- it will just be way too slow.
This isn't a bug with Paint.NET. It's just how computers work. Even Photoshop, GIMP, or Krita will slow down and have problems if you load up images that are larger than what can be fit in RAM. The solution is generally to upgrade your PC with more RAM and a newer/faster CPU.
The zoom level will not affect the fill tool (ahem, paint bucket tool 😂). It performs all of its calculations based on the pixels of the image itself, not the gamma-corrected pixels that are drawn to the screen.
I think this is called "pixel perfect" drawing (for whatever reason). This has been suggested before, and I have the code for the basics of its implementation, but it is not integrated into the app yet.
Yeah this could be a bug in the new beta. There could be some other issue though as the "error messages flashing on the canvas" is part of a code path that isn't really affected by the new changes in 5.0.4 🤔
I don't think it's a GPU driver issue -- it looks like your drivers are pretty recent.
I'll file a bug and see if I can dig around and find anything. Be sure to report back if it happens again or if there are any other issues that you see.
You can scroll when dragging by using the mouse wheel
Also if you want to move the layer to the bottom or top, there are commands in the Layers menu, or you can Ctrl+click the buttons (the tooltip calls this out)
No. You cannot specify the color or stroke details in a custom shape. What you are trying to do is to instantiate a System.Windows.Shapes.Path object. This simply does not exist in the context of Paint.NET custom shapes. You cannot use a different root object type in your XAML, it must be SimpleGeometryShape, which does not allow you to set stroke or fill information -- those are solely for the user to configure in the toolbar.
This will be making it in for the upcoming 5.0.4 update, for both Image->Resize and the Move Selected Pixels tool. In addition, gamma correction will be used for thumbnails, the canvas itself (important when zooming!).
5.0.3 versus the latest build of 5.0.4. Due to scaling by your browser, these may not look quite correct, but I assure you they are
Notice that in 5.0.4 there is a new toolbar button -- this configures the gamma mode between corrected and uncorrected gamma. It defaults to gamma corrected.
This cannot be Paint.NET's fault. If the mouse freezes momentarily then you've got an issue with some driver and something called DPC latency.
I have had some similar issues on my PC but it's usually when my mouse moves over the volume control in the task bar. Seems to happen less when using headphones. Apparently NVIDIA's GeForce drivers have some unresolved issues in this area as well, that may contribute.
If you open the files in Notepad it's pretty obvious
PaintDotNet.AppSettings.json is all of the app settings/preferences, this is what you're looking for. This is the only file you should copy between versions -- leave the other two alone!
PaintDotNet.Configuration.json just has one flag that enables portable mode.
paintdotnet.runtimeconfig.json is a bunch of weird settings that configures some .NET stuff.
Okay from talking with @saucecontrol, he was able to clear up some of the details.
1. Adaptive "Best Quality" should probably not have "Best Quality" in the name. This does have a sharpening effect, by design. Same goes for Bicubic and Lanczos.
2. Bilinear will produce good results without the "transparent moat" (which is a ringing artifact from the sharpening).
3. The old "Super Sampling" mode, for enlarging, which was actually using my own implementation of bicubic for enlarging (I'll call it "PdnBicubic"), can be reproduced using Magic Scaler. There are a few per-pixel discrepancies but they are just a +/- 1 in the RGB values due to differences in precision or rounding (MagicScaler is probably producing the more ideal result).
So I think what I'm going to do, for the next update (5.0.4) is this:
1. Rename "Adaptive (Best Quality)" to "Adaptive". @saucecontrol apparently objected to the "Best Quality" label but I missed it or forgot
2. Rename "Bicubic" to "Bicubic (Sharp)"
3. Add "Bicubic (Smooth)" which will almost identical to the old "Super Sampling" when enlarging.
This means you would just use "Bicubic (Smooth)" to get what you need/want in this case. I could probably put up a test build shortly, this isn't difficult from a coding standpoint.
It looks like some other software is hooking or injecting itself into the Paint.NET process:
SS3DevProps.dll C:\Program Files\ASUSTeKcomputer.Inc\Sonic Suite 3\Foundation\x64\SS3DevProps.dll, version=
NahimicAPIDevProps2.dll C:\Program Files\NahimicAPI\NahimicAPIDevProps2.dll, version=2.3.4.61094
ProductInfo.dll C:\Program Files\NahimicAPI\ProductInfo.dll, version=
The first thing I would do is to try disabling those and see if it helps. "Hooks" and shell extensions can easily cause this type of problem.
A quick Google search indicates that "NahimicAPI" may be part of A-Volute, which we've seen cause issues exactly like what you're seeing, especially when upgrading from Win10 to Win11.
Okay I got the image and I figured out the fix. It was as I suspected, one of the IPTC metadata items isn't loading correctly. Suppressed the error and now it works.
It looks like this should be possible. Read through this and see if you can get it to work: https://learn.microsoft.com/en-us/archive/blogs/henrikn/sharing-windows-10-store-apps-with-your-family