I really, really like mspaint. I like it so much that I will go through great efforts to use it in places I really shouldn’t. Like macOS or linux.

The problem

The thing is, I prefer windows 10’s version of mspaint. To the point I really do not want to use anything else. This kind of sucks. Wine does not play well with it and most of the time when someone asks how to get mspaint running, they will be mocked. Why not use a better program? Use krita, or paint.net if you really need a windows program. Mspaint can’t run on wine. This is echoed everywhere I go.

Except none of these other, quite frankly better programs are mspaint. Mspaint is terrible. It’s not a good program to do any serious work with. And that’s the point. I don’t want anything to take away the joy of making silly mspaint doodles from me. I want to use mspaint because it’s mspaint, as well as the nostalgia it gives me.

I found this great guide on how to get windows 7 mspaint to work with Wine. And it set me on the right path! I did run into some errors on the way there. They were easy enough to solve, but might leave someone else or future me stumped. So here’s how I got mspaint working using wine on macOS. I haven’t tested this on linux yet, but I figure the steps should be the same.

Let’s get into it.

What you’ll need

  • A windows 10 device - I think a temporary virtual machine will do the trick, but I used my actual windows 10 laptop. Windows 11 might work as well.
  • Classic Paint - I used this version because it doesn’t have the annoying paint 3D button
  • Resource Hacker - We’re going to edit some DLL files! (Don’t worry, it’s not scary)
  • Wine and winetricks installed - Wine is pretty self explanatory. We’ll need winetricks to install some additional .dll files.

The steps

Run the classic paint installer on the windows machine. This will install classic paint into C:/Program Files. Navigate to that folder, then Classic Paint. Copy mspaint1.exe within there and rename it to mspaint2.exe or whatever.

Open the copied mspaint2.exe with resource hacker. Open up the Action menu at the top of the window, click “Add from a resource” and open C:/Program Files/Classic Paint/en-US. This will initially appear empty in the resource hacker file picker, just change the file filter at the bottom right to All files (*.*) and a file called mspaint1.exe.mui. Open that file, select everything in the popup that resource hacker shows, and import it. Save the file.

Move this mspaint2.exe file to the computer you’re planning on using it on via… whatever way possible.

On that machine, run winecfg, make sure that the windows setting is set to windows 10.

Now run winetricks wfc42 and winetricks uiribbon, this will download the .dll files that we need! This is the part that deviates from the windows 7 mspaint guide I linked. That guide had you manually grab the uiribbon and wcf42u .dll files from the windows machine. I followed these steps, realized that they didn’t work… and out of desperation installed wfc42 and uiribbon through winetricks… and those worked fine. I don’t even know if you need to install uiribbon through winetricks, I did it because I had overwritten my original copy of it.

run wine /path/to/mspaint2.exe (which you can rename to just mspaint.exe if you want). You should see an mspaint window pop up. Which brings me to…

The caveats

Not everything works. There is some stuff missing and some tools will crash the application if you try to select them. Here’s what I’ve noticed so far:

  • The color palette is missing. You can still manually pick colors through the advanced color picker.
  • Trying to paint with certain textured brushes will crash the application.
  • Trying to use the text tool will crash the application

This definitely doesn’t work as well as it does on native windows, but it’s useable. For my purposes (other than the text, RIP) it works well enough, but don’t come yelling at me if it crashes at some point or another. There’s a reason people say mspaint doesn’t work in wine, and I’m glad I got it to launch and be semi-useable in the first place.

Final notes

If there’s any people who try to get this working and run into something that isn’t mentioned here, let me know on bluesky. I’m not too active on there but I will see your message… eventually. That’s all for now!