This is part of the dissatisfying solution I found. It might come from me not 100% understanding how the `Canvas` and `Application` are supposed to communicate...