N Numbrush Get Numbrush

Why color by number art has no soft edges

Antialiasing exists to make an edge pixel ambiguous on purpose. In artwork where every pixel must belong to exactly one region, ambiguity is a wrong answer rather than a nicer-looking one.

Look closely at colour-by-number artwork and every edge is hard: no feathering, no soft shadow, no gradient anywhere. That is not a stylistic preference, it is what the format requires.

Every pixel has to belong to exactly one region

The whole mechanism rests on a question that must have a single answer: for any pixel, which region is this? It is asked when you tap, and again for every pixel of every frame to decide what colour to draw.

Antialiasing exists to make that answer ambiguous, deliberately. When a drawing program renders a curve, the pixels along the edge are only partly covered, so it blends — sixty per cent of the shape’s colour, forty per cent of what is behind it. That pixel is a compromise between two things, and it looks better precisely because it is one.

For a map whose pixel values are region numbers, a blended pixel is not a compromise. It is a wrong answer, and it belongs to neither of its neighbours. It is worse than it sounds, because the blend is arithmetic performed on an id. The red channel carries the high byte of a 16-bit region id and the green channel the low byte, so averaging two ids channel by channel does not give something between them — half of id 40 and half of id 41 can decode to a region somewhere else entirely. There is no meaningful interpolation between two labels.

So the source plates are drawn as flat polygons with no antialiasing at all. Boundaries quantise to the pixel grid and every pixel has an unambiguous owner. The stair-stepping you would see in the file at full size is the price, and at the scale a picture is actually viewed it is not visible.

The map is data, and every step has to treat it as data

The constraint does not stop at the drawing. The same principle shows up at three more points, each time as the same mistake in a different costume: treating a picture of numbers as a picture.

The file has to be lossless — a PNG, never a JPEG. Lossy compression alters pixel values in ways the eye forgives in a photograph, and here a pixel value is a number. Worse, its artefacts cluster around sharp transitions, so the damage lands exactly along the boundaries, which is the one place the ids must be exact.

It has to be sampled with nearest-neighbour filtering and no mipmaps. GPUs smooth between neighbouring texels by default, which is right for photographs and catastrophic for ids — interpolating between id 40 and id 41 gives 40.5. A mipmap is the same problem taken further: an averaged half-size copy is antialiasing applied after the fact to data that must not be antialiased.

And it has to be uploaded raw — unpremultiplied, with no colour-space tag. A tagged texture invites a conversion, and a colour conversion applied to numbers changes the numbers. Premultiplication multiplies the colour channels by alpha, which is arithmetic on the id bytes for no reason at all.

What you actually see

The outline

The dark line between regions is not a stroke drawn over the artwork. It is carried in the same map: a blue channel of 255 marks the pixel as outline, and when the shader meets one it draws the line colour and stops without consulting the palette.

Outline pixels therefore belong to no region, which has a consequence you can feel: a tap landing exactly on one has hit nothing. That is a reason tap correction takes a histogram of the ids inside a small circle around your finger and picks the most common unfilled one, rather than reading the single pixel under the touch point.

Shading without gradients

There is no gradient anywhere in the source art, and yet a finished mandala reads as shaded. The shading was quantised in advance: a band is drawn as a run of flat regions carrying successive tones of one hue, and once they are filled the eye assembles them into a ramp. With clean boundaries, a handful of steps is enough — which is much of what twelve colours per picture is for.

The limit is worth stating plainly. A continuous gradient, a soft drop shadow, a blurred glow: none can exist in this artwork. They are not avoided by taste — they cannot be represented, because each is a smear of intermediate values belonging to no region.

The softness you see anyway

One last twist. When a picture is fitted to a phone screen, one screen pixel can cover several image pixels, so the display averages them — antialiasing, applied at the last moment, to the visible artwork only. The art is hard-edged; what reaches your eye is slightly soft.

None of that averaging touches the id map, which is sampled nearest and is never blended. It is also why a small region looks darker at fit scale than zoomed in: it is being averaged with its own dark outline before you ever see it.

Underneath all of this is one distinction applied consistently. One image is a picture, to be smoothed, averaged and colour-managed. The other is a table of numbers shaped like an image, and every operation that improves a picture damages it. Keeping the two straight is most of what makes an instant fill possible.

Frequently asked questions

Why is color by number art always flat with hard edges?

Because a second image encodes which region each pixel belongs to, and an antialiased edge pixel is a blend that belongs to neither neighbour. Since the region id is split across two colour channels, averaging two ids can decode to a region somewhere else in the picture entirely. Flat polygons with no antialiasing keep every pixel unambiguously owned.

Why can the region map not be a JPEG?

Its pixel values are numbers rather than colours. Lossy compression alters values in ways that are invisible in a photograph and fatal in data, and its artefacts cluster around sharp transitions — which is exactly where the ids have to be exact.

Why does the artwork look soft on screen if it has no soft edges?

The display does the softening. When a picture is fitted to a phone screen, one screen pixel covers several image pixels and shows their average. That averaging affects only what you see; the id map is sampled with nearest-neighbour filtering and never blended.

Can a colour-by-number picture have a gradient?

Not a real one. What it can have is a quantised one: a run of flat regions carrying successive tones of a hue, which the eye reads as a ramp once they are filled. Continuous gradients, soft shadows and blurred glows cannot be represented, because they are intermediate values belonging to no region.

Try it on a real canvas

Numbrush is colour by number for adults: mandalas, rose windows and geometric pattern work, twelve colours a picture, a magnifier for the tight spots, and a wrong tap that costs you nothing. Free, offline, no ads and no account.

Download on the App Store

Related guides

All guides