@Override
  public void render(
      Canvas canvas, Element element, DoublePoint mapCenter, DoublePoint screenSize) {
    super.render(canvas, element, mapCenter, screenSize);
    Spaceship spaceship = (Spaceship) element;

    Matrix matrix = new Matrix();
    matrix.reset();
    matrix.postTranslate(-spaceShipBmp.getWidth() / 2, -spaceShipBmp.getHeight() / 2);
    matrix.postRotate((float) spaceship.getRotation());
    matrix.postTranslate(
        (float) (spaceship.getPosition().x - mapCenter.x + screenSize.x / 2),
        (float) (spaceship.getPosition().y - mapCenter.y + screenSize.y / 2));

    canvas.drawBitmap(spaceShipBmp, matrix, null);
    renderColourRect(canvas, element, mapCenter, screenSize);
  }
  private void renderColourRect(
      Canvas canvas, Element element, DoublePoint mapCenter, DoublePoint screenSize) {
    Spaceship spaceship = (Spaceship) element;

    Paint paint = new Paint();
    paint.setDither(true);
    paint.setAntiAlias(true);
    paint.setFilterBitmap(true);
    paint.setColorFilter(new LightingColorFilter(0x00505050, spaceship.colour().toAndroidColor()));

    Matrix matrix = new Matrix();
    matrix.reset();
    matrix.postTranslate(-rectBmp.getWidth() / 2, -rectBmp.getHeight() / 2);
    matrix.postRotate((float) spaceship.getRotation());
    matrix.postTranslate(
        (float) (spaceship.getPosition().x - mapCenter.x + screenSize.x / 2),
        (float) (spaceship.getPosition().y - mapCenter.y + screenSize.y / 2));
    canvas.drawBitmap(rectBmp, matrix, paint);
  }