A page of painted scenes cost us $1.20 and no illustrator

Painting the pictures for one page would have cost $20 at our first price. A switch of model and a set size brought it to $1.20 the same afternoon. When a picture comes out wrong, a fresh repaint worked where editing it did not.

By Mackenzie Bowes · mackenzie@mackenziebowes.com · @_mackenziebowes on X

Contents

Pixel-art night workshop: Mackenzie crouches and points at one small finished painting of a door on the bench while an agent stands by a heap of crumpled sketches; Penny sleeps beside the painting.

Painting the set of pictures for one page would have cost us $20 at our first price per picture. By the end of the same afternoon the set cost $1.20, and the four doors on mackenziebowes.com (/toolbox, /reference, /writing and /skills) went live with painted pixel scenes made that way.[1]

If you build sites alone and can't pay an illustrator, this is the loop that got us there. Most of it is failure.

How did $0.29 a picture become $0.03?

Mackenzie points at a glowing blue screen showing a tall stack of coins shrinking to a short one, while hooded agents at the bench hold up small pictures.

Our first painter was gpt-5.4-image-2. Each picture cost $0.29 on OpenRouter. We sent it big reference images, so we cut them to smaller, 48-colour references and the price fell to $0.16. Then we switched to gpt-image-2.5-flare through OpenRouter's images endpoint, asked for one set size, and a picture cost $0.03.[1]

The set went from about $20 to $1.20. When the second set landed, Mackenzie wrote:

This is SOOOOO SICKKKKKKK HOLY SMOKES.

Mackenzie,

Size is the lever. Every model has a smallest picture it will paint (655,360 pixels for this one), so ask for that size and scale it up through a 256-colour pixel grid afterwards. The grid makes the pictures look painted by one hand.[1]

How do you keep a set of pictures looking alike?

Mackenzie holds up two framed reference pictures, the room and the cast, while agents at a bench paint new pictures from them under a blue screen.

We wanted every picture on the doors to look painted by one hand, so we wrote notes on the style of our /skills pictures after studying each one at full size: 16-bit pixel art, no black outlines, three or four flat tones per material, always night, slate-blue shadows and amber lamp pools that fall off within a body length. Then Sunburst drew the world from the notes alone, with no pictures sent: one cast sheet and one wide view of the workshop, $0.016 each.[1]

The cast sheet had a problem. The agents were charming, but its Mackenzie had lighter hair and a shoulder bag nobody asked for. So his approved figure stayed in as its own reference, and the new sheets became the cast and world references.

Was the new pair better than the old one? We ran a blind test: the same model, the same prompt and the same Mackenzie, with only the style and cast references changed, in two unlabelled rows.

1 came out much better

Mackenzie,

Row 1 was the pair Sunburst drew from the notes. They replaced the old references, and every later picture is painted from a cast reference and a world reference.

Why did the giant scenes fail?

An agent props up one huge, crowded painting while Mackenzie kneels on the floor laying out small separate tiles of the same scene.

We wanted one huge scene for each door, with every part of the page inside it, but a scene the width of the page, painted at one size, lacked the detail to hold up at full screen. Mackenzie saw it at 18:35:

these images only really look good at half size - HD.

Mackenzie,

So we cut each megascene into bento tiles, and they worked:

the bento tiles look so nice.

Mackenzie,

But the new page design around the tiles had failed, and the /skills page already worked.

We really nailed it on the skills page.

Mackenzie,

So the doors took the /skills shape, a heading in the corner, painted gradients and no boxes, and kept the tile pictures.

The words on the pictures were a separate problem: Mackenzie caught them sitting off their dark areas at about 770 px wide, so we kept the words on calm parts of the picture, and a check found 48 of 51 text blocks on calm picture.[1]

Should you edit a bad picture or paint it again?

Mackenzie holds a framed picture of himself with too many arms and points to a fresh blank canvas an agent pulls from a backpack.

Paint it again.

Three of our pictures had faults: a ladder agent whose boots missed the rungs, two sparrows fused into one bird, and two agents carrying books with their legs tangled. We wanted them fixed in place, so we tried Iris inpainting on each one, but it failed on all three.

Iris is pretty useless, yea.

Mackenzie,

So we asked Sunburst to fix them, and it changed the pictures without fixing the faults.

Sunburst didn't fix shit lol

Mackenzie,

Therefore we painted them again: the original request went straight to Sunburst as a fresh picture, with the fault named in it (boots on the rung, two separate sparrows, one agent). All 36 pictures of the next set came back for $1.23.

Then a new fault arrived. Mackenzie, in the Rules picture, had too many arms: two holding a mug, one in a pocket and one at his side.

Just rerun it, fixing it didn't do anything last time

Mackenzie,

Two fresh paints cost $0.06, and the first came out with two arms, one pointing at the board and the other in a pocket. So the rule we kept: when a picture is wrong, throw it away and paint it again. A repaint costs less than the time to nurse an edit.

Looking at every picture at full size is the other half, because the faults hide in the details. Mackenzie also saw the blue holographic monitors were missing from the world reference. They offset the yellow, so we added them.

What does a picture cost now?

An agent weighs coins against a small picture on a brass scale while Mackenzie holds up two finished pictures beside two short stacks of coins.

ItemPrice (OpenRouter, 2026-10-29)
Medium picture, smallest sizeabout $0.025
xhigh picture, for a hero shown largeabout $0.06
Transparent cardabout $0.04
The v3 repaint of all three doors$1.19

Sunburst (openai/gpt-image-2.5-sunburst) costs the same as Flare at each size and paints better, so it is our default.[1]

How do you do it yourself?

Mackenzie shows two framed references to the agents while blue screens above show the steps: a picture, a pixel grid, the cast, and a crossed-out edit beside a fresh repaint.

  1. Make one reference picture of your world and one of your cast. Every later picture is painted from those two.
  2. Ask for the model's smallest size and scale it up through a 256-colour grid.
  3. Look at every picture at full size for hands, arms and how many of each figure there are.
  4. If one is wrong, paint it again. Don't edit it.

See the result at mackenziebowes.com/skills.

If you're painting the pictures for your own site and one keeps coming out wrong, I'd like to compare notes: mackenzie@mackenziebowes.com or @_mackenziebowes.

Sources

  1. OpenRouter model pages and the images endpoint: prices for gpt-5.4-image-2, gpt-image-2.5-flare and gpt-image-2.5-sunburst, paid and measured by Mackenzie Bowes on 2026-10-29. openrouter.ai/models