C++ Lua HTML C GLSL Objective-C++ Other
Clone or download



Milton is an open source application that lets you Just Paint.

There are no pixels, you can paint with (almost) infinite detail. It feels raster-based but it works with vectors. It is not an image editor. It is not a vector graphics editor. It is a program that lets you draw, sketch and paint. There is no save button, your work is persistent with unlimited undo.

Latest release

Stories in Ready Join the chat at https://gitter.im/serge-rgb/milton

Milton Paint ss


What Milton is not:

Milton is not an image editor or a vector graphics editor. It's a program that lets you draw, sketch and paint.

User Manual

If the GUI makes something not-obvious, please create a github issue!

It's very helpful to drag the mouse (or pen) while pressing space to pan the canvas. Also, switching between the brush and the eraser with b and e. You can change the brush size with [ and ] and control the transparency with the number keys.

Here is the latest video tutorial

Check out the patreon page if you would like to help out. :)

While on Windows there are binaries available, for Milton on Linux or OSX you will have to compile from source. There are some basic build instructions below. They will probably build, but please be prepared to do a bit of debugging on your end if you run into trouble, since these are not the primary development platforms.

How to Compile


Milton currently supports Visual Studio 2017.

Other versions of Visual Studio might not work.

To build:

Run cmd.exe and type the following


Milton will be compiled to build\Milton.exe

This repo provides a binary SDL.lib that was compiled by running build_deps.bat in the third_party directory.


Work in progress, but is known to build and run.


Use your linux distribution's package manager to install these.

  • X11 (libx11-dev on Debian-based distros)
  • OpenGL (libgl1-mesa-dev on Debian-based distros)
  • XInput
  • GTK2 (libgtk2-dev on Debian-based distros)

On Ubuntu, these are Milton's required packages:



Release build:


build-lin.sh uses cmake under the hood, and any arguments you pass to it will be passed along to cmake.

Here are some CMake options you might care about:

flag type does
TRY_GL2 bool Tells Milton to target OpenGL2.1. Does not guarantee that such a context will be created. This is the default Release target.
TRY_GL3 bool Tells Milton to target OpenGL3.2. Does not guarantee that such a context will be created. This is the default Debug target.
CMAKE_BUILD_TYPE string Configures the build type. Defaults to Release. Available build types are: Release and Debug.

Example debug build u sing GL2.1: ./build-lin.sh -DCMAKE_BUILD_TYPE=Debug -DTRY_GL2=1


Work in progress.



If you run into troubles building on OSX, please try to submit a pull request if possible.



Copyright (C) 2015 - 2018 Sergio Gonzalez

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.


Milton is made with love by Sergio Gonzalez with the help of awesome people.