Skip to content

Canvas

Canvas is Kitlig's layered image editor. Drop images from Files onto an endless pasteboard, frame them with artboards, move and scale them, paint, select, mask, cut subjects out with a click, fill a region with AI, run any image operation on a layer, place frames from a video, edit a 3D model's textures with a live preview, then export each artboard or send the result back into the project as an asset. Everything a layer needs (its pixels, its mask, its placement, the artboard it sits in) is saved with the project, so a canvas reopens exactly where you left it.

Getting in

  • Click Canvas in the mode bar, then New in the options bar for an empty canvas.
  • Or right-click any image in Files and choose Open in Canvas. That creates a canvas with the image as its first layer, inside an artboard of the image's size.

Bringing images in

  • Place Image (options bar, or the picture icon in the Layers footer) opens the project's image picker and adds the chosen image as a new layer above the active one.
  • Right-click an image in Files (Sandbox mode) and choose Add to Canvas to place it on the canvas you have open.
  • Paste (Ctrl+V) with an image on the clipboard, from a screenshot or a browser, adds it as a layer.
  • Place Frame (the film icon in the options bar) opens a project video in a small player. J and L step one frame (Shift: ten), K or Space plays, Home and End jump to the ends. Place Frame adds the shown frame as a layer that remembers its clip and frame, so J and L keep stepping it on the canvas afterwards. See Video frame layers.
  • Results from Faces, People, Detect, AI Fill and the AI menu arrive as layers on their own.

The options bar picker switches between the canvases in the project. Rename, duplicate and delete live beside it.

The layout

  • Options bar (top): the canvas picker on the left, the active tool's settings in the middle, layer actions on the right (Place Image, Place Frame, the AI and Detect menus, the palette generator, Apply Transform, Merge Visible, Export, Send Layer, Send Merged).
  • Tool column (left): Move, Hand, Zoom, Artboard, the selection tools (Marquee, Lasso, Polygon Lasso, Pen Select, Selection Brush), Select Subject, Brush, Eraser, Paint Bucket, Eyedropper. Hover a tool for its shortcut.
  • Canvas (center): an endless pasteboard. Each outlined rectangle with a name above it is an artboard; the checkerboard around them is scratch space.
  • Properties over Layers (right): the numeric placement of the active layer or the selected artboard, alignment, size and fit, fill, then the stack with layers grouped under their artboards, blend mode and opacity.
  • Status strip (bottom): zoom, the pointer's world position, the selection size, and what Undo will do next.

Artboards

An artboard is a named rectangle on the pasteboard that owns the layers inside it, the way a page owns what is printed on it. It has a background colour (white unless you make it transparent), it can clip its layers to its edges, and it exports as one image cropped to its rectangle. Layers outside every artboard sit on the pasteboard: handy for scraps and references, but they never export on their own.

  • Artboard tool (A): drag on the pasteboard to draw one. Shift keeps it square. Click without dragging to drop one at the size shown in the options bar, which has the common presets and a width and height you can type. The fill swatch and Transparent set what new artboards start with.
  • Select layers and press Ctrl+Alt+G (or use the frame button in the Layers footer, or right-click a layer) to wrap them in an artboard that fits them exactly. That is how you turn a placed image into an artboard.
  • Click an artboard's name label, or an empty part of it, to select it. Drag to move it: its layers come along. The eight handles resize it; Shift keeps it square. Arrow keys nudge it. Double-click the name to zoom to it.
  • Moving a layer so its centre lands inside an artboard puts it in that artboard; dragging it out onto the pasteboard frees it. The Layers panel does the same when you drag a row onto an artboard header or between its layers.
  • Properties shows the selected artboard's name, position, size (with presets), fill, Transparent background, and Clip content. Turn clipping off to let layers hang over the edge on screen; exports always crop to the artboard.
  • Ctrl+Alt+Shift+G releases the selected artboards and leaves their layers on the pasteboard. Delete with an artboard selected removes it and everything inside, after asking. Undo brings both back.
  • The eye on an artboard row hides the whole artboard; the lock stops it from moving or resizing.

Right-click a layer or an artboard row in the Layers panel for these actions, plus Move to artboard and Duplicate artboard.

Layers

Every layer has its own pixels, an optional mask, a placement (position, scale, rotation, flips), a blend mode, and an opacity. The blend modes are the sixteen standard web compositing modes (Normal, Multiply, Screen, Overlay, Darken, Lighten, Color Dodge, Color Burn, Hard Light, Soft Light, Difference, Exclusion, Hue, Saturation, Color and Luminosity) plus Add (linear dodge), which sums the layer onto what is below.

  • Click a row to select it. Ctrl-click adds, Shift-click selects a range. Double-click the name to rename it.
  • The eye hides a layer. Alt-click the eye to show only that layer.
  • The lock keeps a layer from moving or being painted.
  • Drag rows to reorder them, or use Ctrl+[ and Ctrl+]. Layers keep to their own artboard when stepping; drop a row onto another artboard to move it there.
  • The footer adds an empty layer (inside the current artboard), wraps the selection in an artboard, duplicates the selection (Ctrl+J), merges (Ctrl+E: merge down with one layer selected, merge the selected layers into one with several), adds, applies or deletes a mask, and deletes.
  • Ctrl+J with a pixel selection duplicates the selected layers with a mask cut from the selection, so the copy shows only the selected area.
  • Ctrl-click a layer's thumbnail to select its opaque pixels; Ctrl-click the mask thumbnail to select the mask. Shift adds, Alt subtracts, both intersect.

Resample in Properties picks how a scaled layer is drawn: Smooth for photos, Crisp for pixel art. Apply Transform bakes the current scale and rotation into the pixels.

Align in Properties snaps the selected layers to the left, centre, right, top, middle or bottom of their artboard (or of the content bounds on the pasteboard); the last button centres both ways.

Fill in Properties shows the foreground colour and a Fill button that floods the whole layer (or just the selection) with it; the same lives on the layer's right-click menu.

Fit H, Fit V, Fit and Fill open the resize dialog with that fit preselected. Its three tabs: Scale only moves the transform; Size resamples the pixels to a width and height (the layer keeps its place on the canvas unless you also fit it to the artboard); Upscale AI runs an upscale operation, cloud or your local ONNX model, and places the result with the chosen fit while hiding the source. Size… opens the same dialog on its Size tab.

Moving and transforming

With the Move tool, click a layer to select it and drag to move it. The box around the selection has eight scale handles and a rotate handle above the top edge.

  • Shift while dragging a handle keeps the proportions. Alt scales about the center.
  • Shift while rotating snaps to 15 degree steps.
  • Arrow keys nudge by one pixel, Shift+arrows by ten.
  • Ctrl-click hits a layer by its rectangle even where it is transparent.

Position, size, scale and angle can also be typed into Properties.

Transform mode (Ctrl+T) opens an amber bar in the options row. Every drag, nudge or Properties edit you make while it is open is gathered into one history step: Apply or Enter keeps them, Cancel or Escape puts the layer back where it started.

  • The mouse wheel zooms about the pointer. Shift+wheel scrolls sideways.
  • Hold Space or the middle mouse button to pan, or use the Hand tool.
  • F fits everything into view, 0 (or Ctrl+0, Ctrl+1) returns to 100 percent, + and - (or Ctrl++ and Ctrl+-) step the zoom.

Selections

Selections live on the canvas, not on a layer, so they can cross layers and reach past any layer's edge.

  • Marquee (M): rectangles or ellipses. Shift squares the shape, Alt draws from the center.
  • Lasso (L): freehand.
  • Polygon Lasso: click corners; double-click or Enter closes.
  • Pen Select (P): click for corners, drag for curves, Enter closes, Backspace removes the last point.
  • Selection Brush (S): paint the selection with a brush; Alt paints it away. Size and hardness are in the options bar.

While any selection tool is active the options bar shows the combine mode (new, add, subtract, intersect) and a feather. Shift while drawing adds, Alt subtracts, both together intersect. The Marquee also has an aspect ratio (Free, 1:1, 4:3, 3:2, 16:9, 9:16, 2:3, 3:4 or a custom W:H) that every drag snaps to.

Shortcut Action
Ctrl+A Select the current artboard (or all the content)
Ctrl+D Deselect
Ctrl+Shift+I Invert
Q Quick mask: tint everything outside the selection
Ctrl+H Hide the marching ants
Delete Clear the selected pixels on the active layer

Select Subject

The Select Subject tool (W) turns a click into a mask.

  • Click on the thing you want. Click again elsewhere on it to grow the mask. Alt-click on something the mask should not include. Click a dot again to remove it; Ctrl+Z or Backspace removes the last one.
  • With SlimSAM as the engine you can also drag a box around the subject.
  • The candidate shows as a blue tint. Enter or Accept adds it to the selection using the combine mode; Esc or Clear drops it. Soften edges feathers the result slightly.

Two engines are available under Settings, Canvas Editor:

  • SlimSAM runs locally through Kitlig's ONNX runtime. Install it once under Settings, Local Inference. It gives the cleanest edges and supports box prompts.
  • MediaPipe Interactive Segmenter ships with the app and needs no download. It takes clicks only.

If SlimSAM is chosen but not installed, Kitlig falls back to MediaPipe and says so once.

Faces finds every face on the active layer and cuts each one to its own masked layer named Face 1, Face 2 and so on, left to right. People does the same per person. When SlimSAM is installed, people masks are refined with it.

Painting and masks

  • Brush (B) paints the foreground colour on the active layer. Eraser (E) clears to transparent. Size, hardness, opacity and flow are in the options bar; [ and ] step the size. Alt-click with the brush, or use the Eyedropper (I), to pick a colour from the canvas.
  • The options bar shows the foreground and background swatches. X swaps them, D resets them to white over black. Clicking a swatch opens the Kitlig colour picker (see Colours and palettes); Alt-click a swatch in the picker to set the background colour instead.
  • Paint Bucket (G) fills the contiguous region under the click with the foreground colour, within the Tolerance. Untick Contiguous to fill every matching pixel on the layer; Sample all layers reads the flattened image instead of the layer alone. A selection limits the fill.
  • A selection clips every stroke.
  • Click a layer's mask thumbnail to paint the mask instead: white reveals, black hides, and any grey in between is partial. The brush colour's brightness is the mask level, so pick grey to paint half-opacity. Shift-click the thumbnail disables the mask without deleting it.
  • Mask from Selection in the selection options bar adds a mask from the current selection (or a reveal-all mask with none). Load Layer turns the active layer's mask, or its transparency, into a selection. Split Layer cuts the selection into its own layer and the rest into another.

Colours and palettes

Every colour swatch in Canvas opens the Kitlig picker: a saturation square, a hue strip, hex and RGB fields, an eyedropper button, a Recent row (the last 24 colours you picked, shared by every project), and the swatches of the active palette. Press + to add the current colour to that palette (a new "My colours" palette is started when there is none). Shift-click a swatch to remove it.

Palettes live in two places: project palettes travel with the project, global palettes are available in every project on this machine. The picker's palette list shows both groups.

The Colour Palette Generator (the palette icon in the options bar, or the picker's palette button) builds palettes:

  • Start with six slots; add or remove as many as you like. Each slot has a lock and its own swatch, and clicking a slot sets the foreground colour.
  • Pick an algorithm: complementary, analogous, triadic, tetradic, split complementary, monochrome, shades, tints, random, or From image. The image sources are the active Layer, the flattened Document, or any project Asset; colours are extracted by clustering the pixels, dominant colour first.
  • Generate or Space rerolls every unlocked slot. Locked slots never change.
  • Save palette stores the colours; Save with session also stores the algorithm, base, locks and seed so the generator reopens exactly where you left it. Choose Project or Global.
  • Export… writes the palette as Kitlig JSON, GIMP .gpl (also read by Krita, Inkscape and Aseprite) or Adobe .ase (Photoshop, Illustrator). Import… reads any of the three into the chosen scope.

AI Fill

Right-click inside a selection and choose AI Fill to generate new content in the selected area. The dialog takes an instruction and shows the operation's cost. Kitlig flattens the visible layers around the selection, sends the crop and the selection mask to the operation, and places the result as a new masked layer named AI Fill exactly over the selection. The selection may extend past every layer; the empty area is filled with the chosen colour first so the model has something to work from.

Working with AI on layers

The AI menu in the options bar (also on a layer's right-click menu) runs catalog operations with the active layer as the input:

  • Edit layer with AI… lists every image operation that takes an image (the Edit Image models, Remove Background, Restore, Depth, and so on). The active layer, with its mask applied, is bound to the first image slot; the form shows the operation's other inputs and parameters. The result lands as a new layer above the source, fitted to its footprint.
  • Generate layer… lists the text-to-image operations. The aspect ratio is prefilled from the active artboard and the result is placed inside it.
  • Resize / Fit / Upscale AI… opens the resize dialog described under Layers.

Jobs run through the same queue as Sandbox; the toast tells you when the layer arrives.

Fixing JPEG artifacts

Select the area to clean (the Marquee's aspect ratio option helps for a tidy crop) and press Fix JPEG in the selection options bar. Kitlig flattens the visible layers inside the selection, runs a local SwinIR restoration model on it tile by tile, and places the result as a new layer masked to the selection, so nothing outside changes. The model is not bundled: convert the SwinIR colour JPEG weights with the script below, then register the .onnx under Settings, Local Inference, with the task JPEG Artifact Removal.

npm run onnx:convert:swinir -- --weights 006_colorCAR_DFWB_s126w7_SwinIR-M_jpeg40.pth --out swinir_car_jpeg40.onnx --check

The weights come from the SwinIR release page (the 006_colorCAR_* files; jpeg40 is the general-purpose choice). The script needs Python with torch, onnx and onnxruntime, exports a fixed 252 px tile, and checks the ONNX output against PyTorch.

Detections and mocap as layers

The Detect menu (also under a layer's right-click menu) turns what a model finds on the active layer into layers:

  • Objects to masked layers runs Detect Objects or Segment by Class with one of your registered local YOLO models; every detection becomes a masked copy of the layer named after its class.
  • Depth layer places a depth map over the layer.
  • Faces to layers and People to layers are the MediaPipe cut-outs also found under Select Subject.
  • Pose layer draws each person's skeleton (joints and bones) on a transparent layer cropped to the figure; Face mesh layer draws the face tessellation; Pose + face layer draws both on one layer. All three run on-device.

Video frame layers

A layer placed with Place Frame remembers its video and frame index. With it active:

  • L steps to the next frame, J to the previous one; Shift steps ten. Each step re-captures the frame into the layer and is one undo step.
  • Video frame in Properties has the frame field, previous and next buttons, the timecode, and Detach, which keeps the pixels and forgets the clip (J and L go back to their tools).
  • The Layers row shows a film badge and the frame number.

Editing a 3D model's textures

Right-click a .glb or .gltf in Files and choose Edit Textures…, or press the palette button in the viewer toolbar. See Edit Texture for the full workflow: one artboard per texture channel (metallic, roughness and occlusion as separate greyscale maps, never the packed glTF map), a live 3D preview beside the canvas you can paint on directly, PBR or NPR channel sets, and export back to a textured GLB.

Exporting and sending work out

  • Export… (Ctrl+Alt+E) opens the export dialog: tick the artboards you want, pick PNG, JPEG or WebP, a scale from 0.5× to 3× (or your own), and either Project assets or Folder on disk. Each artboard becomes one file named after it, with the scale as a suffix (Cover@2x.png). JPEG has no transparency, so artboards without a fill come out on white.
  • Send Merged publishes the selected artboards (or all of them when none is selected) as image assets and opens the first in Sandbox. On a canvas without artboards it flattens every visible layer instead.
  • Send Layer publishes the active layer's own pixels (and its mask as a channel) as an image asset and opens it in Sandbox.
  • Everything keeps lineage: the new asset records the source asset it came from.

Undo

Ctrl+Z and Ctrl+Y walk one history that covers layer edits, paint strokes and selection changes. Pixel history is capped by the undo memory setting; the oldest steps drop first.

Settings

Settings, Canvas Editor holds the segmenter choice, the people engine, the default resample for new layers, the checkerboard, the quick mask colour, the undo memory, and the brush defaults. Recent colours are kept there too, under the hood.