- New: Effect - Color - Quantize, which applies palette reduction to 256 colors or less, along with dithering. This is the same algorithm used when saving images at 8-bit color depth or lower.
- Fixed and improved palette generation when saving at 8-bit color depth or less
- Greatly optimized performance of palette generation and image quantization
- Added option to choose between Octree (default) and Median Cut algorithms for palette quantization when saving at 8-bit color depth or less
- Fixed a crash in Move tools when the selection was 0-width and/or 0-height
- Added tooltips w/ shortcut keys to the Tools dropdown in the toolbar
- Fixed IndirectUI ColorWheel rendering (thanks @toehead2001!)
- Fixed a crash in the Text tool when using Ctrl+(Left,Right,Backspace,Delete) (thanks @Bruce Bowyer-Smyth!)
- Changed: New layers are now filled with #00000000 instead of #00FFFFFF
- Fixed a crash when working with selections (OutOfMemoryException)
- New: Effects can now access the Document's DPI via EffectEnvironmentParameters.DocumentResolution
- Fixed drawing of the color palette in the Colors window when using some non-standard DPI scaling settings (e.g. 1.15x)
- Fixed a crash when using EdHarvey's Threshold plugin
- Fixed the return value from PdnRegion.GetBoundsInt() so it's not anchored at (0,0) unless it should be
- Fixed premultiplied-to-straight color conversion on some code paths (thanks @null54!)
- Updated bundled AvifFileType plugin to v188.8.131.52, which includes performance optimizations and bug fixes. See its GitHub releases page (https://github.com/0xC0000054/pdn-avif/releases) for more info.
- Updated bundled DDSFileTypePlus plugin to v184.108.40.206, which uses an updated version of DirectXTex (2021-04-06).
- New: Holding Ctrl while using the Color Picker tool will sample from the merged image (vs. just the current layer)
- New: The file name in the title bar will now have a prepended asterisk when it has unsaved changes
- Changed: The image close 'X' button can now be clicked for images that are not currently active
- Changed: In the Text tool, Ctrl+(Backspace, Delete, Arrow Keys) has been improved to work more like Microsoft Word. Thanks to @Bruce Bowyer-Smyth for the patch!
- Fixed: The Rectangle Select tool, when used to draw a constrained, fixed ratio, or fixed size selection, will now correctly clamp the rectangle to be within the canvas
- Fixed: Layers -> Move Layer Up/Down/Top/Bottom was not working for images with fewer than 3 layers
- Fixed: Edit -> Erase Selection will now fill with transparent black (#00000000) instead of transparent white (#00FFFFFF)
- Fixed: Custom Shapes will now be displayed in a consistently sorted order
- Fixed: ".pdnSave" ghost files should no longer linger when saving to the desktop. This was due to a bug in Windows and File Explorer.
- Fixed crashes due to DXGI/Direct3D "lost device" or "device removed" errors that can happen for various reasons (duck/undock, driver update, low memory, etc.)
- New: Plugins can now use the IArrayPoolService, a wrapper around .NET's ArrayPool, to optimize their array allocations
- Updated bundled AVIF FileType Plus to v1.1.6. See the pdn-avif releases page on GitHu for more information.
- New: AV1 (*.avif) images can now be saved (not just opened), due to bundling of @null54's AvifFileType plugin (v220.127.116.11).
Installation of Microsoft's codec from the Microsoft Store is no longer necessary, which means this also works on Windows 7 and 8.1.
- Improved performance and memory usage in the canvas rendering engine, especially when working with large images or images with many layers.
This is most noticeable when scrolling and zooming.
- Improved CPU usage when a selection is active and when GPU accelerated rendering is disabled
- Improved CPU/GPU usage when a selection is active but the app is not (the animation is disabled)
- Reduced memory usage when working with images that have regions of solid color
- Fixed the Magic Wand and Paint Bucket tools so that they do calculations in the premultiplied alpha color space.
This ensures that transparent colors (alpha=0) with different RGB values are treated as equal, and do not create borders.
- Fixed the Move Selected Pixels tool so that it fills the uncovered region with 0 (transparent), instead of a transparent version of the secondary color.
- Fixed: Backspace now works correctly in the Colors form: it does not execute Edit → Fill Selection
- Fixed an issue where saving an image at 4-bit color depth (usually pixel art) was using an incorrect palette (reduced color count/quality).
This was due to a bug in Windows Imaging Component (WIC).
- Greatly improved performance when saving images at 8-bit color depth
- Fixed an issue where very large images (e.g. 50000 x 50000 px) couldn't be saved at indexed bit-depths (8-bit or less) due to a bug in Windows Imaging Component (WIC).
- Fixed an issue where BMP images couldn't be loaded if they had the .PNG extension (there's an Android screenshot utility out there which does this ...)
- Improved: Ellipse Selection Tool's now tessellates at a higher resolution, resulting in smoother circles at small sizes
- Fixed a rare crash in the Gradient tool ("The tool must be in the Drawing state ...")
- New: Added a list of the DLLs that are loaded into the process on the Settings → Diagnostics page.
This is to help troubleshooting scenarios.
- Fixed an issue with copying large images to the clipboard: if an image would take up more than 4GB, it could not be copied because the DIB and DIBV5 formats cannot be larger than that.
Now, the DIB and DIBV5 formats are not placed on the clipboard if this happens.
- Fixed an issue with Effect plugin tooltips which was preventing the menu item from being easily clicked (thanks @toe_head2001 for the fix!)
- Fixed an issue that was preventing Effect configuration dialogs from working correctly in the Visual Studio designer (thanks @toe_head2001 for the fix!)
- Added diagnostics information to most error dialogs.
This is to help with troubleshooting.
- Fixed: Scanning will now apply the DPI (resolution) from the scanner to the image, if possible
- Updated bundled DdsFileTypePlus plugin to v18.104.22.168.
See the pdn-ddsfiletype-plus change log on GitHub for more information. Thanks @null54!
- New: Added 2-bit per pixel support when saving as PNG
- New: Added 1-bit per pixel support when saving as PNG, BMP, and TIFF
- Fixed low-bit-depth saving quality (8-bit, etc.), as it would sometimes produce very bad results (e.g. only using 64 colors instead of 256)
- Fixed: Resizing an image at very large sizes (e.g. 32K pixels to 64K pixels) would fail due to an arithmetic overflow
- Fixed: Sometimes recently saved images would not have an updated thumbnail in File Explorer unless/until its window was manually refreshed
- Fixed: Sometimes saving an image to a network share would not work
- Updated bundled DDSFileTypePlus plugin to version 22.214.171.124, which fixes an issue when loading and saving images using the sRGB color space. This issue was reported here.
- Fixed an error that was preventing some old PDN images from loading
- Fixed a crash in the new selection outline renderer (due to misaligned Push/PopAxisAlignedClip calls)
- Changed saving to use the ReplaceFile Win32 API, which improves its compatibility
- Fixed an EndOfStreamException error that prevented some JPEGs from opening (thanks @null54 for the fix!)
- New: XMP metadata is now preserved for supported file types (PDN, JPEG, PNG, TIFF, JPEG XR, HEIC, AVIF, WEBP)
- New: Belarusian (be) translation
- New: Greek (el) translation
- New: Slovenian (sl) translation
- New: Added a right-click context menu to the image thumbnail/tab. It contains commands for Copy Path, Open Containing Folder, Save, Save As, and Close.
- New: The items in the File -> Open Recent menu now have a tooltip with the full file path for the image
- Changed: The selection outline animation is now smoother (2x the framerate)
- Fixed: Saving with the HEIC file type is no longer limited to a max Quality value of 90.
This limitation was in place because of a crash due to heap corruption, which no longer happens.
- Fixed: The NVIDIA sharpening setting will no longer cause trippy distortions in the canvas area
- Fixed an issue with loading very small TGA images
- Fixed: Error dialogs when opening images now consistently show the file path
- Fixed a PropertyNotFoundException error message when saving JPEG images with a particular ordering of metadata. This was due to a bug in Windows 7's WIC JPEG codec.
- Fixed clipped text rendering in the Curves adjustment dialog in some non-English translations.
- Fixed a crash when running the app with a DPI scaling setting of 500%
- Fixed a crash that would sometimes happen when running effects with very small selections
- Fixed some IndirectUI controls not honoring their default values if also initialized in read only (disabled) mode. Thanks @BoltBait for the fix!
- Fixed a memory leak in the effect system that was causing 1 orphaned thread per effect invocation
- Changed: Removed the use of NTFS Transactions, which was causing trouble with OneDrive.
Microsoft has also deprecated this technology.
- New: Added /openCrashLogFolder command-line argument.
This is intended for simplifying troubleshooting workflows.
- New: Added /forceUpdateCheck command-line argument.
This is intended for troubleshooting scenarios to simplify acquiring the latest version, e.g. "just run paintdotnet:/forceUpdateCheck" instead giving a longer list of buttons to click on.
- Updated WebPFileType plugin to version 126.96.36.199, which adds XMP metadata support. Thanks @null54!
- Updated DDSFileTypePlus plugin to version 1.10.3.
This fixes an issue with saving in the A1R5G5B5, A4R4G4B4, and R5G6B5 formats, and adds support for reading files that use a 'BC7' FourCC. Thanks @null54!
- 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.
- 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
- 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.