Stop multi-color paint from bleeding past your edges

The slicer purged the right amount of filament. The AMS swapped cleanly. You pull the print and the orange has crept half a millimetre into the cream stripe. The fix usually isn't on the printer.

A multi-color 3D printed low-poly fox figurine in matte burnt-orange and cream filament with crisp color boundaries between regions

Where the bleed comes from

Multi-color FDM is a layer game. At every Z height the slicer shells the part with two or three perimeter walls, then fills the inside with whatever the part's main color is. When the painted boundary on your mesh is fuzzier than that wall thickness, the inside color shows through at the edge.

OrcaSlicer users have been asking for a paint depth parameter since February to address it from the slicer side. That fix isn't shipped.

What you can fix today is the mesh side. Layerpaint exports per-triangle color groups, and the slicer's perimeters land on the boundary you painted. A sharp boundary gives the slicer its best shot at a clean edge. A fuzzy one won't be saved by flush volume tuning.

Three settings decide how tight that boundary is: Auto-partition handles the rough cut, the Crease tool covers boundaries auto-partition missed, and the Brush plus Depth cap handle the rest.

Step 1 — Get the auto-partition right

Drop your STL on the painter. Layerpaint compares every adjacent triangle pair and marks every edge whose dihedral angle is sharper than the threshold as a region boundary. The Region tool floods within those regions and stops at the boundaries.

Click any region. The whole region paints in one click and stops at every edge auto-partition saw as sharp.

If a smooth dome got split into a dozen slivers, raise the crease angle in the Auto-partition section on the right panel. If two parts that should be different colors got lumped together, lower it. The mesh re-partitions live on the slider.

On most miniatures and mechanical parts, the default lands close enough that one or two slider tweaks gets you a clean per-region paint without any further work.

Step 2 — Draw the boundaries auto-partition missed

Some boundaries aren't crease edges. Eyebrows on a smooth face. A racing stripe across a flat panel. Lettering on a lid. Auto-partition won't see them, because the geometry is flat across the line.

Two ways to add them.

On a crease the auto-partition is ignoring, switch to the Crease tool. Click any crease edge near where you want the boundary, and Layerpaint walks the crease loop in both directions until it closes or hits the model edge. The whole loop becomes a drawn boundary in one click. Drag instead to paint just a section of the loop.

On a smooth surface with no crease at all, stay on the Region tool and drag. The drag draws a boundary line under your cursor. Lift the pointer and the boundary commits. The Region tool will respect it on the next click.

Hold Shift while dragging to erase a boundary you drew earlier. Tap B to flash the boundary overlay on and off, which is handy when paint is hiding the lines.

Tip

Drawn boundaries live in undo history alongside paint, so an over-aggressive crease loop is one Ctrl-Z away. Don't be cautious. Draw the loop, paint both sides, undo if it didn't land.

Step 3 — Make the Brush respect the lines

The Brush is for the parts the Region tool can't get cleanly: wisps of detail, gradients, touch-ups around edges that don't quite meet at a crease.

Two checkboxes in the Brush settings matter for bleed.

For touch-ups on a model that's already mostly painted, turn both on. The brush behaves like a tight eraser of the current color and ignores everything you didn't aim at.

Step 4 — Cap the depth on thin parts

The Brush works on a 3D ball, not a 2D circle on the screen. On a thin wall (a visor, a sword blade, a panel under 1 mm thick) that ball punches through and paints the back face you didn't even see.

The Depth cap slider clips the ball along the view direction. Default is 20%, which is conservative enough to stay on the front of most miniatures. Drop it to 10% on the thinnest parts. Raise it to 100% when you want the full sphere on a chunky body region.

If the brush still reaches the wrong faces, switch to the Detailer tool. Same depth-cap behavior with one extra rule: it only paints faces whose normals point at the camera. Useful when you're working on a recess and the brush keeps grabbing the surface behind it.

Common questions

Will this also fix OrcaSlicer's bleed at the perimeter walls?

No. That's a slicer-side problem with paint depth on the wall, and it's a known feature request waiting on a slicer change. Layerpaint's job is to keep the painted boundary on the mesh as tight as the triangles allow, so the slicer has the best possible input. What you tune in the slicer after that is wall count and flush volume.

What about a color transition on a fully smooth surface?

Smooth surfaces have no crease for the brush to snap to, so Stop at crease won't help. Draw the boundary by hand with the Region tool's drag, then click each side. Or paint freehand with the Brush and accept that the boundary will land at brush-radius resolution.

Does this work the same on Bambu A1, Prusa MMU3, Anycubic ACE Pro?

Yes on the input side. All of them read the 3MF Materials Extension that Layerpaint exports, and all of them use per-triangle color groups for paint assignment. What changes between them is wall-thickness behavior and flush logic, which are slicer settings, not anything Layerpaint controls.

Try it now

Drop an STL on the painter, turn Stop at crease on under the Brush, and try painting a fiddly area you've been avoiding. The export to Standard 3MF works in Bambu Studio, OrcaSlicer, PrusaSlicer, and any slicer that reads the Materials Extension.

A one-time payment of $19.97 unlocks export forever. No subscription. Your mesh stays on your machine.

Happy printing.