Mojave Paint
Layer-based image editor
Only for Mac
Free · In‑App Purchases
Mojave paint is a new image editor for macOS exclusively, with modern GPU-accelerated internals and a clean, uncluttered UI reminiscent of the best image editing software of the 1990's.
Layer features:
• Layer masks
• Effects/Styles
• Blend modes
• Arrange layers into folders
Tools:
• Painting tools: Brush, pencil, eraser, paint bucket, fill/clear selection, gradient
• Selection tools: Marquee, lasso, magic wand
• Transform tools: Move tool, Free Transform tool, rotate, flip
• Type tool: Font, size, color, leading, kerning, stretching
• External services: We currently support calling out to Nano Banana Pro via Google if you provide your own API key
Filters/adjustments:
• Levels and Curves
• Brightness and contrast
• Blur and Sharpen
• Halftone, Mosaic, Crystallize
• Gradient Map
• Colorize
Input/output:
• Open/export as: PNG, JPEG, WEBP, HEIC, TIFF, GIF, BMP, and (for macOS 26+ users), AVIF. Note: Exporting requires "Pro" which is an In-App Purchase, currently in the $9.99 pricing tier. This is a one-time purchase.
• Paste pixels off the clipboard
• macOS drag and drop
more It’s very easy to navigate! love how it completely skips the annoying ai trends and just gives me a beautifully clean workspace with clear buttons so I can get my edits done fast.
Developer Response Thank you! A lot of work went into the little details, just little things but they all add up. Like "click through" working, where your click actually actives the controls when the application is inactive (no wasted click just to activate the window.) Even Apple's own Numbers application doesn't do that.
It’s very easy to navigate! love how it completely skips the annoying ai trends and just gives me a beautifully clean workspace with clear buttons so I can get my edits done fast.
Thank you! A lot of work went into the little details, just little things but they all add up. Like "click through" working, where your click actually actives the controls when the application is inactive (no wasted click just to activate the window.) Even Apple's own Numbers application doesn't do that.
I’ve only just started playing with this, and I’m into it—but I have to ask, what is with the icon? I don’t understand how the name and what the app does and what the icon have to do with each other, to such a level that I’ll have to paste in a replacement icon as I’ll never get that this bland rock means old-school but modernized editing app. Is it a temporary icon?
Developer Response Thanks for the review, yeah that icon, it is a placeholder. I suspect you're on Tahoe where it looks quite bad, it's a little better on Sequoia where the ragged edge is more identifiable. There is a long history of icons being arbitrary (like VLC having a traffic cone) but the issue is just that it's bland looking. I was thinking it evokes the piles of boulders you see in like Joshua Tree National Park, and thought about doing a "graffiti'ed rock face" theme across the board including in the app icon, but now I'm not so sure. I'll give it some thought.
I’ve only just started playing with this, and I’m into it—but I have to ask, what is with the icon? I don’t understand how the name and what the app does and what the icon have to do with each other, to such a level that I’ll have to paste in a replacement icon as I’ll never get that this bland rock means old-school but modernized editing app. Is it a temporary icon?
Thanks for the review, yeah that icon, it is a placeholder. I suspect you're on Tahoe where it looks quite bad, it's a little better on Sequoia where the ragged edge is more identifiable. There is a long history of icons being arbitrary (like VLC having a traffic cone) but the issue is just that it's bland looking. I was thinking it evokes the piles of boulders you see in like Joshua Tree National Park, and thought about doing a "graffiti'ed rock face" theme across the board including in the app icon, but now I'm not so sure. I'll give it some thought.
New:
• Dark mode
• Multiple stroke effects on the same layer
Changed:
• Open dialog now allows HEIF, BMP and AVIF. That was just an oversight.
• Grain interpolation is now available in the Gradient Overlay effect and in the Stroke effect's gradient fill
• Type tool picks up the foreground color when you switch into it, like other tools do
• Poly Lasso gains shift key to constrain functionality, which constrains to 90 or 45 degree angles
• Eraser gains an "antialias" checkbox, so you can erase in hard-edged pencil style
• New alpha channels start out hidden
• The text insertion caret now hides while you scrub the kerning controls
• Merging down onto a layer with layer styles preserves those styles instead of rasterizing them. The top layer still rasterizes its styles.
• Curves adjustment moved from cmd-M to shift-cmd-M so you can still use cmd-M for minimize
Fixed:
• Sampling color with the eyedropper wouldn't update the color picker's hex value if that text box was in focus (thanks joelstu for reporting)
• If you have the color picker open and targeted at something specific (like type color, adjustment layer color, etc) and you click the foreground swatch, it now reliably leaves the previous targeting in place and just snaps the picker to the foreground color
• Sizing the pencil tool with the slider was causing fractional pixel sizes, which led to gappiness while dragging or shift-connecting lines
• Attempting to open an adjustment window via keyboard shortcut when an adjustment window was already open would break the future use of those shortcuts, at least until you activated the Image menu.
1.4.3 2d ago
New:
• Image > Adjustments > Posterize
• Filter > Blur > Surface Blur
• Filter > Sketch > Halftone Pattern (this replaces the old Filter > Pixelate > Monochrome Halftone and is much more configurable, including dots, lines and concentric circles, plus it picks up the foreground/background colors)
Changed:
• Solid Fill and Gradient Fill adjustment layers now have a Rasterize option in their context menu
• Numpad plus and minus keys now zoom in and out without a Command modifier
• The Colorize filter gains YIQ color mode, sometimes useful for the lighter hues such as yellow and teals
Fixed:
• Apply Layer Mask on an overflowing pixel layer was putting the result in the wrong location
• Merge Down wasn't working when the bottom layer was fully transparent
• Merge Down was leaving the bottom layer hidden even when the top layer had visible content
• Fixed some performance issues in the gradient adjustment layer while scrubbing the angle or the color stops
• Rasterizing a type layer was discarding its layer styles
1.4.2 Jul 29
New:
• Conic gradients
Changed:
• The Gradient Fill adjustment layer was missing the "Reverse" checkbox
• Gradient editor UI overhaul, now you can single click to open the color picker among other changes
• Save a gradient to the swatches panel with right clicking or drag-and-drop
• Apply a gradient just by clicking the swatch – it applies to whatever is using gradients
Fixed:
• Rotating a center or left aligned type layer was shifting it unexpectedly
• Gradient overlay effect was spanning the wrong range on center or left align type layers
• Gradient overlay effect wasn't moving with a type layer as you dragged with the Move tool
• Performance issue when dragging color stops around in the gradient overlay UI
1.4.1 Jul 28
This release is all about typography.
New:
• Type layers now have character and paragraph style options in the Properties panel
• Character styles are beefed up to include tracking, kerning and horizontal/vertical scaling
• Paragraph styles include alignment, justification and leading. Enter makes a new paragraph and Shift+Enter makes a linebreak within a paragraph.
• You can also toggle the text frame on and off now
Changed:
• Font color initializes itself from the foreground color when you activate the Type tool, at least until you set it directly from the Type tool options, after which they're decoupled
• Reduced the default font size to 36pt, but also added a preference for default font size in the Settings window
• You can now drag multiple files onto the "No document" view and open them all as layers (in a new document created for you)
1.4.0 Jul 22
Changed:
• Move/Free Transform: Now defaults to aspect ratio constrained, and shift key frees it to be non-proportional
Fixed:
• Crashing bug when resizing a placed image via File > Place
• Pencil tool had a regression in 1.3 that made it not fill pixels with 100% hardness
• Stale transform box when solo selecting the first layer of a multiple layer set
• Marquee tool shifted its starting anchor by 1px when dragging the selection off the document edge
• Drag and drop of native .mojavepaint files from the Finder now works
• Drag and drop of multiple images "placed as layer in current document" now works, they just get placed at 100% scale
1.3.2 Jul 14
New:
• Brush and pencil tools get "Behind" blend mode
Changed:
• Masks use black as a neutral color now, so backspace to clear selected pixels turns them black (transparent)
• Snapping snaps to document edges as well as explicit guide lines
Fixed:
• Edit > Transform > Rotate on a layer with a mask was mispositioning the mask
• Memory wasn't being released when closing a document
• If you had a non-rectangle marquee selected, new documents were still using the rectangle one
• The presence of alpha channels or layer styles now prevents you from saving in place as a flat file format
1.3.1 Jul 13
New:
• Layer styles, with support for 9 in this release: Color Overlay, Gradient Overlay, Satin, Inner Shadow, Inner Glow, Drop Shadow, Outer Glow, Stroke, Bevel & Emboss
• Added the Crystallize filter to Filter > Pixelate.
Changed:
• Edit > Fill… now gives you a preview of the blend mode on hover
• Initial tool starts as Marquee now instead of Move
• Export file format sticks for the application session
Fixed:
• Undoing a text change in a type layer also undoes the associated layer name change (if there was one)
• Paintbrush at 100% hardness now does antialiasing. Pencil remains available for jagged edges.
• With the paintbrush, Normal Linear wasn't taking the fast path that regular Normal uses. Now, when you're painting at full opacity with no selection, either Normal or Normal Linear can dab paint directly into the layer texture with no intermediate accumulator.
1.3.0 Jul 9
Thanks to u/amyworrall for reporting several of the bugs fixed in this release.
New:
• "Normal Linear" blend mode just for brush and pencil. Makes soft edges blend more naturally when dealing with saturated colors.
Changed:
• The current document's filename now shows in the titlebar
• Snapping: Layers snap their center point to the guides now, in addition to their edges
• The viewport can be panned now even when the document fits in the viewport
Fixed:
• The settings window and the various HTML view windows no longer show above other applications' windows, and they properly consume keystrokes before they reach the main app
• The type tool only shows the Apply/Cancel buttons when you're actively editing text
1.2.5 Jun 30
Changed:
• When placing a new type layer, the cursor size now changes with the selected font size, giving a bit of a size preview
• Image resize: You can now decouple width and height to allow changing the aspect ratio
• Cropping a flat image clips the pixel data to the document bounds, so it's still "flat" and can be saved in place in its original format
Fixed:
• When you do a "merge down" on layers with masks, the masks are applied first but the destination layer was failing to discard its layer mask afterwards, resulting in a doubly-applied mask
• When dragging a square-constrained marquee off the document, it could sometimes turn rectangular
• Brush stroke undo wasn't working correctly on pixel layers that overflow the document
• Potential crash when sizing up documents that have a large out-of-document pixel overflow area
• With the brush tool, holding shift after you've started the stroke constrains to vertical or horizontal, but it would sometimes lock you in to the wrong axis
• The Image Resize dialog could have stale values in the input boxes
• Filling pixels with e.g. cmd-backspace when the Move tool is active wasn't properly updating the bounding box
1.2.4 Jun 25
New:
• Export in webp format. For things like screenshots, webp is half the size of PNG.
Fixed:
• Hue/Saturation always defaults to HSL mode
• Curves adjustment: Dragging a spline control point away and back to its starting location no longer deletes it
• Curves adjustment (tool window specifically): Allow curves on all RGB channels independently, matching how the Curves adjustment layer works
• Select from alpha (cmd-clicking a thumbnail) was offset wrong when the layer extends off the document
• Rasterizing a type layer wasn't making a full document texture, so areas were unpaintable
1.2.3 Jun 19
New:
• Snapping to guides: When you move layers around with the Move/Free Transform tool, or drag out selections with the marquee tools, you see it now snaps to the guides. Defeat with the "View > Snap" menu item or by holding ctrl.
• And speaking of snapping, positioning of the guides themselves now snaps to 1/2 the distance between the nearest neighbors, or 1/3 and 2/3 of the distance when you hold Option. Again, defeat by holding ctrl.
• The welcome screen now features one-click New Document presets
Changed:
• Hue/Saturation now lets you shift the hue in either HSL (what you're probably familiar with) or YIQ color space. YIQ can be useful for preventing fringes on soft edges, and for preserving luma.
• Color and gradient swatches are shown together now in the Swatches panel, no need to toggle between them
Fixed:
• You can trigger the tool flyout with right click now as well as long press. Thanks to u/AirRaidFootball for the feedback.
1.2.2 Jun 17
Changed:
• New Document dialog lets you fill with white, black or transparent
• Improved layout for the Image Size dialog
Fixed:
• Invert and Desaturate could sometimes operate on the wrong selection area when the layer was moved out of document bounds
• File > Place was failing to snap to integer pixels when dragging, causing blurred pixels
• Layers grouped in folders could see soft edges and other semitransparent areas get darkened. This is because folders now each have their own compositing stack, meaning they result in premultiplied alpha that has to be "unpremultiplied."
1.2.1 Jun 11
NOTICE:
• This release moves to an In-App Purchase mechanism to unlock exporting. Users of the free version still have all features including all the tools, adjustments, filters, etc, and the ability to save in the native Mojave Paint format, but to export as JPEG, PNG, or other formats it will be a one-time purchase in the $9.99 pricing tier.
New:
• Adjustment layers. Initially these six: Solid Color, Gradient, Curves, Levels, Brightness/Contrast, Hue/Saturation
• A new Properties tab, showing details for the selected layer
• Type layers now support dead keys (repeated sequences used for typing accented characters such as ñ)
• Two new "logical" blend modes: Clip and Stencil, letting you get some of the functionality of clipping masks
Changed:
• The selection moves with now when you resize the canvas or rotate canvas 90 degrees
• Folders have a proper "Normal" blend mode, isolated from the parent and siblings. Previously they acted like "Pass Through" blend mode in certain cases.
• The information in the Info tab has moved to File > Info…
• Clicking any numeric text box selects all the text within, making it easy to blow away existing value with typing. Thanks to u/ToughAsparagus1805 for pointing me in the right direction here. Most of them start autofocused as well now when a new tool window appears.
• Native Mojave Paint file extension is now .mojavepaint
Fixed:
• Painting on a layer mask with a selection present was not working correctly
• No more 1 bit color variation when using the pencil tool
1.2.0 Jun 11
New:
• Now you can drag pixels across spring-loaded tabs (use a selection tool to cmd-drag a selection), like you can already do with the Move tool
• Select > From Channel
Changed:
• Undo step limit increased from 100 to 1000
Fixed:
• Filters/adjustments and Free Transform work on the Quickmask
• Keyboard event fixes so you should never lose keystrokes anymore due to hidden focus state
• New framed text boxes start at the right height before you enter any text
• Paintbrush strokes over a partially selected region now limit to the selection correctly
• Dropping a layer folder on itself no longer vanishes the folder
1.1.5 May 29
New:
• File > Duplicate
• Filter > Color > Colorize
• Filter and Adjustment windows have an "ants" icon to temporarily hide the marching ants
• Use the move tool to drag a layer across documents. Hold on a document tab and "spring" over to the other document.
• Whole screen overlay with obvious drop zones when dragging files in from outside the app
Changed:
• Updated tool slot flyout style (in preparation for a future dark theme)
• Delete key deletes a layer mask if select instead of the entire layer
• Gradient interpolation mode is part of the gradient model now, so it saves with swatches, renders in the preview, and so added color stops initialize to the correct midpoint value
• Curves: Click a control point to delete it
• Brush cursor gets chevrons now when holding ctrl+option, to make it obvious you're in brush resize mode
• You can double-click a recent document to open it even when "Multi-select" mode is ticked on
Fixed:
• The "duplicate" cursor you get with the move tool (while holding Option) is positioned about the correct hot spot now
• Click inside a selection with a selection tool to deselect, is undoable now
• Feather option is hooked up now on Lasso and Poly Lasso
1.1.4 May 24
* Fixes a bug with the Move/Free Transform tool where escaping out of it can clip your layer pixels unexpectedly
1.1.3 May 21
New:
• Gradient tool: Added various interpolation modes including OKLab and Grain
• Image > Adjustments > Hue/Saturation
• Select > Hue... allows you to select by hue. Works great with the new Hue/Saturation adjustment.
Changed:
• Drag a layer onto New Layer button to duplicate
• Option-drag a layer to duplicate
• Reduced default layer thumbnail size from 48 to 32
• Made "overlay scrollbars" the default, you can change back to regular scrollbars in Settings
• Option to toggle "rule of thirds" grid with the crop tool
• Halftone filter defaults the screen angle to 45 degrees
Fixed:
• Gradient color stop midpoints now work on reversed gradients
• Crop tool maintains aspect ratio correctly when you zoom in and out to grow/shrink the crop area
1.1.2 May 20
New:
• File > New from Clipboard
• Image > Adjustments > Gradient Map
• Numerical inputs for translation, rotation and scaling when using the Free Transform tool, so you can type in precise values
• Command-drag a selection to cut and paste those pixels in place
• Improved anti-aliasing with the magic wand tool
Fixed:
• Text layers no longer lose formatting when backspacing all the characters away
• Up and down arrow now moves the cursor correctly on rotated text layers
1.1.1 May 12
This release, somewhat reluctantly, adds generative AI features. This simply calls out to an external service (only Google Gemini supported at the moment) to do inpainting, object deletion, etc. It uses your own credentials and Mojave Paint is hands-off about how you might want to use these AI features.
Other features in this release:
• Added Opacity and Blend Mode parameters to the Brush and Pencil tools, with the backtick key temporarily activating the "Clear" blend mode
• Blend mode rewrite to use proper PDF-spec compositing in premultiplied alpha space
• Added a multiselect toggle on the start screen to make it easy to open multiple recent documents at once
• Added "Trim to document" in the pixel layer context menu
• Hold Command when you press the "duplicate layer" button and it goes below the target layer, similar to how the New Layer button works in Mojave Paint and various other paint programs
• (12) other minor changes and fixes
1.1.0 May 9
New:
• Dark mode
• Multiple stroke effects on the same layer
Changed:
• Open dialog now allows HEIF, BMP and AVIF. That was just an oversight.
• Grain interpolation is now available in the Gradient Overlay effect and in the Stroke effect's gradient fill
• Type tool picks up the foreground color when you switch into it, like other tools do
• Poly Lasso gains shift key to constrain functionality, which constrains to 90 or 45 degree angles
• Eraser gains an "antialias" checkbox, so you can erase in hard-edged pencil style
• New alpha channels start out hidden
• The text insertion caret now hides while you scrub the kerning controls
• Merging down onto a layer with layer styles preserves those styles instead of rasterizing them. The top layer still rasterizes its styles.
• Curves adjustment moved from cmd-M to shift-cmd-M so you can still use cmd-M for minimize
Fixed:
• Sampling color with the eyedropper wouldn't update the color picker's hex value if that text box was in focus (thanks joelstu for reporting)
• If you have the color picker open and targeted at something specific (like type color, adjustment layer color, etc) and you click the foreground swatch, it now reliably leaves the previous targeting in place and just snaps the picker to the foreground color
• Sizing the pencil tool with the slider was causing fractional pixel sizes, which led to gappiness while dragging or shift-connecting lines
• Attempting to open an adjustment window via keyboard shortcut when an adjustment window was already open would break the future use of those shortcuts, at least until you activated the Image menu.
more Version 1.4.3 2d ago
Data Not Collected The developer does not collect any data from this app.