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.
Contents

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?

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.
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?

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
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?

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.
So we cut each megascene into bento tiles, and they worked:
the bento tiles look so nice.
But the new page design around the tiles had failed, and the /skills page already worked.
We really nailed it on the skills page.
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?

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.
So we asked Sunburst to fix them, and it changed the pictures without fixing the faults.
Sunburst didn't fix shit lol
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
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?

| Item | Price (OpenRouter, 2026-10-29) |
|---|---|
| Medium picture, smallest size | about $0.025 |
| xhigh picture, for a hero shown large | about $0.06 |
| Transparent card | about $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?

- Make one reference picture of your world and one of your cast. Every later picture is painted from those two.
- Ask for the model's smallest size and scale it up through a 256-colour grid.
- Look at every picture at full size for hands, arms and how many of each figure there are.
- 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
- 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