Paint3D but without the 3D.
A spiritual successor built in Rust with only the 2D tools.
Microsoft retired Paint3D without ever releasing its source code. RustyPaint brings back its simple 2D tools that I've personally grown really used to.
It's usable for everyday edits. It includes brushes, erasing, fill, colour picking, transparency, clipboard, image stickers dragged in or opened, crop, rectangle and freeform selection nudged around or stretched with the arrow keys, Smart cutout, shapes, editable curves, adding text and basically everything that Paint3D was able to do with 2D.
It also has some QoL features like dark mode, editable curve and shape points, several pictures open at once, and a configurable new-canvas size. If it ever dies on you, it offers the unsaved work back the next time it starts. Things I wished Paint3D would've had. I also gave it a theme of its own, but the old colour scheme is also available.
It detects image types from their contents, opens several icon and obscure bitmap formats, and Save as can convert between the formats it writes.
RustyPaint is meant to be used for simple and quick edits, just like Paint3D was for me. It knows it's purpose and won't overstep. However, I do have some plans for things that might make it better while keeping to that purpose. No promises, but I want to make RustyPaint something that I'm proud of and something I can use daily without issue.
| Classic Light | Rusty Dark |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
On Linux and macOS, this works out what your system wants and installs it:
curl -fsSL https://raw.githubusercontent.com/ItzELECTR0/RustyPaint/main/install.sh | shIt asks whether you want the stable or the experimental release, and if it cannot tell what kind of
package your system takes, it asks that too. Then it shows you what it found and waits for a yes
before it installs anything. Pass options after -s --, so | sh -s -- --help lists them,
| sh -s -- --stable --format appimage answers the questions up front, and --noconfirm means it
never asks at all.
Releases offer multiple builds. An AppImage, Arch package, Debian package, RPM, Alpine apk, Flatpak bundle, Windows setup program, and macOS DMG, each one for x86_64 and for ARM64. Windows gets an MSI too, but only for x86_64.
On Arch, install the stable or Git AUR package with your favourite helper:
For yay:
yay -S rustypaint
# OR
yay -S rustypaint-gitFor paru:
paru -S rustypaint
# OR
paru -S rustypaint-gitThere is also an experimental pre-release at the top of the releases list, built from the latest commit on main. It is replaced on every push, so it changes without warning and can be broken. Take it only if you want the newest thing rather than a working one.
Windows and macOS packages are not code-signed yet, so those systems will warn before opening them.
Rust 1.95 or newer is required. Linux also needs a working Vulkan driver. Windows uses Direct3D 12 and macOS uses Metal.
The default build needs a native ONNX runtime and a C++ toolchain. On Windows, first run
./packaging/windows/build-cutout-runtime.ps1 in PowerShell 7 with Python 3.12+, CMake 3.28+
and Visual Studio 2022 C++ tools installed (-Architecture aarch64 for ARM64).
Other supported native targets download a prebuilt runtime during compilation. Use
--no-default-features for the slower, pure-Rust inference backend. Alpine and Intel macOS
currently use that portable backend automatically; the bundled model works with either one.
For an optimized build:
cargo build --release -p rustypaintPackage for Arch Linux:
cd packaging
makepkg -sciSet _native=1 when the package will only run on the machine that builds it.
To run directly:
cargo run -p rustypaint -- path/to/image.png(omit the path to start with a new canvas)
All options are available in the settings menu in the app and written to these files:
| Where? | Settings file |
|---|---|
| Linux | ~/.config/rustypaint/config.toml |
| Flatpak | ~/.var/app/net.electris.RustyPaint/config/rustypaint/config.toml |
| Windows | %APPDATA%\RustyPaint\config.toml |
| macOS | ~/Library/Application Support/RustyPaint/config.toml |
No Paint3D assets are used. I made the icons for this program; Urbanist uses the SIL Open Font License. The bundled model and ONNX runtime have their own notices, available under About.
I am not affiliated with Microsoft. RustyPaint is not endorsed or acknowledged by Microsoft as an actual successor to Paint3D. It is a community reimplementation of software they chose to discard. This project is intended to preserve the 2D functionality of Paint3D and offer it to platforms the original never did.










