Take a manga panel, a webtoon strip, or a flat-shaded anime still and run it through the same upscaler you use on photographs. Something specific goes wrong, and it is not "the lines got soft." The lines get crunchy. A hairline that was one pixel becomes either three pixels of grey mud or a dotted line with gaps at the corners. A photo through the identical pipeline looks fine.
That asymmetry is not a tuning problem. Line art is a different class of signal, and its failure modes are predictable from the statistics alone.
Line art is a two-valued image with sub-pixel information
Look at the histogram of a photograph: a broad, lumpy distribution across most of the tonal range, because every surface has its own albedo under its own illumination. Now an inked manga page. Two spikes — near-black for ink, near-white for paper — with almost nothing between. Everything that matters lives in the narrow ramp between them, typically one to three pixels wide.
Those few in-between pixels are the whole ballgame. On a page scanned at 1200 px wide, the exact position of a line edge is encoded in the values of its anti-aliasing ramp: a ramp at 30/70 puts the true edge nearer one side, 70/30 nearer the other. Upscaling 2× should rescale that ramp — stretch it across two pixels each, keeping the ratio — so the edge stays at the same sub-pixel position.
What generative upscalers do instead is re-decide the edge. Trained to produce plausible high-frequency detail, they run a learned prior saying "this is an edge, put it where the model thinks edges go." That prior is trained overwhelmingly on photographs, where a slightly wrong edge position is invisible because surrounding texture is noise anyway. On line art, moving an edge by a third of a pixel changes the line's apparent weight and, along a diagonal, its apparent curvature. Do that independently at every patch boundary and the line acquires a visible wobble — it does not look blurry, it looks hand-drawn by someone with a tremor.
Why the ringing is so much worse on a flat field
Any sharpening kernel and any sinc-like resampling filter produces overshoot: a bright fringe on the light side of an edge, a dark fringe on the dark side. On a photograph those fringes land on texture with local contrast of its own, and human vision — largely a local-contrast-normalising system — masks them. A 4% overshoot on foliage is invisible.
On line art the fringe lands on otherwise uniform paper. Local contrast normalisation now divides by almost nothing, so the same 4% overshoot becomes the most salient thing in frame. That is the classic upscaled-manga look — a hard black line with a thin grey ghost beside it — and the most reliable tell of an aggressive sharpener.
Flat fills have zero variance, and that is exactly what the prior cannot accept
Here is the subtler failure. A model trained on natural images has learned a near-universal rule: a smooth low-variance region at high resolution contains some micro-texture. Skin has pores, sky has grain, walls have dust. Confronted with a genuine flat fill — 200×300 pixels of pure #FFFFFF inside a cheek or a speech bubble — the model's maximum-likelihood output is not flat white. It is white plus a faint, plausible grain.
That grain is invisible on a textured photo and glaring on line art, for the same masking reason as the halos, and because uniform regions draw the eye's texture detectors. A viewer cannot articulate why the page looks "dirty," but the fill no longer reads as paper.
The same mechanism explains the coloured-line problem. Generative models weight luminance far more than chrominance — the bias every practical codec makes — so a thin saturated line (red on cream, common in webtoon dialogue boxes) has its chroma reconstructed loosely, and its hue drifts toward grey where it is thinnest.
The junction problem: where lines actually disappear
Corners and crossings are where upscalers fail hardest, for structural rather than statistical reasons. A junction — three strokes meeting at a point, or two crossing at a shallow angle — is high curvature at high frequency, and no large sample of similar local structure exists elsewhere in the image for a convolutional filter to average over. Every junction is unique.
Worse, many pipelines include a denoise pass. Thin structures are, by construction, what a denoiser removes: a two-pixel-wide dark ridge on a light field looks exactly like an isolated outlier to a filter tuned for photographic noise. Run denoise before upscale on line art and the thinnest lines — hatching, eyelashes, the taper at the end of a stroke — are the first casualties. They do not come back.
At high magnification the model also has to decide how wide the line should be. Most trained upscalers implicitly normalise stroke width toward what a photographic edge looks like at that scale — wider and softer than ink. A 1-pixel line at 4× therefore becomes either 3 pixels of grey (reads as faded) or 2 pixels of hard black (reads as muddy). Neither is faithful: 4× of a 1-pixel line is 4 pixels at identical ink value with a ramp of the same relative sharpness, which almost no generative model produces.
What actually works, in order
Resample, then decide. A high-quality Lanczos resample preserves the sub-pixel ramp exactly and invents no texture. It adds no detail — but for line art there is none to add. Everything above the anti-aliasing ramp is either ink or paper.
Protect flats explicitly. If your tool exposes fill protection, use it on uniform regions. If not, composite: upscale, then paste the original flats back. Two minutes in any editor, and it removes grain no strength setting will.
Never denoise line art before enlarging. Denoise after, only if the source has real scan noise, with thin structures masked out.
Keep the source lossless. This matters more than preset choice. A JPEG line art file has had its ramp quantised by an 8×8 DCT, producing mosquito noise around every edge — a halo now in the data, so any upscaler enlarges it faithfully. Save intermediates as PNG.
Chase resolution at the source. For vector or digitally drawn art there is no reason to upscale: re-export at target size and the lines are correct at any resolution.
Decision table
| Source | Dominant failure | Correct approach | Do not |
|---|---|---|---|
| Vector export (SVG, AI, PSD with shape layers) | None — pure loss from rasterising | Re-export at target size | Upscale the PNG export |
| Digital line art, PNG, 1–2 px strokes | Line wobble, inconsistent weight | Lanczos resample, no sharpening | Generative upscale, any sharpen pass |
| Coloured webtoon, JPEG source | Mosquito noise around edges, chroma drift on thin lines | Accept ringing, mild desaturate-protect on lines | Heavy sharpening (amplifies the ringing) |
| B/W manga scan with paper grain | Grain amplified into fills, halos on ink | Denoise after, protect fills, then resample | Denoise before upscale |
| Flat-shaded anime render, clean | Invented texture in fills, oversaturated edges | Flat-region protection, conservative preset | Saturation-lifting presets |
| Screentone / halftone source | Moiré and dot pattern collapse | Frequency-domain handling or skip | Any 2× / 4× upscale |
| Pencil or ink sketch on paper | Model reads stroke texture as noise | Resample only, keep the grain | Aggressive denoise, generative detail |
When you should not treat line art as line art
When the illustration has painterly rendering. A Ghibli-style background, a watercolour plate, a soft-shaded digital painting — these have genuine texture statistics and benefit from a texture-aware preset. The line-art rules apply to flat fills and hard strokes, not to anything with a brush.
When the target is print at a specific size. A 72-DPI webtoon panel destined for a 300-DPI A4 plate needs far beyond 4×, and no upscaler invents that information. Redraw or accept a coarser line weight.
When the line weight is the artistic statement. Brush-pen manga, lettering, logo work: a model that normalises stroke width destroys the intended variation. Resample and stop.
When the source is a screenshot of line art. The capture has already resampled, probably with a cheap filter and the OS scaling factor applied twice. Fix the capture first.
The one test that settles it
Crop a 200×200 region containing a line junction and a flat fill. Upscale that crop alone at 100%. Then ask one question: can every pixel I see be traced back to a gradient that exists in the source?
On a photograph, some untraceable pixels are acceptable — that is what detail recovery means. On line art, every untraceable pixel is either invented grain in a fill or a displaced edge, and both are defects. That test is faster than comparing presets, and it explains why the presets that flatter a photograph are the wrong ones for a drawing. The reasoning behind the preset families I use, and the per-content trade-offs between edge synthesis and interpolation, is written up at upgolab.com.





