diff --git a/src/app/index.ts b/src/app/index.ts
index 5e1bd8f57c4120823e67e0ca0d9c9e7218fc17ae..720a4d39cecb815cd9fa9981cf7e53ac44a2d183 100644
--- a/src/app/index.ts
+++ b/src/app/index.ts
@@ -121,37 +121,28 @@ ready(() => {
                     antialias: true
                 });
 
+                // Stop execution when not active
+                window.addEventListener("visibilitychange", () => {
+                    if (document.hidden) {
+                        app.stop();
+                    } else {
+                        app.start();
+                    }
+                });
+
                 // TODO Init resize event
-                /*
+                /**/
                 window.addEventListener("resize", (event: UIEvent) => {
-                    // canvasDiv.style.width = (window.innerWidth * 0.9).toString();
-                    // canvasDiv.style.height = (window.innerHeight * 0.9).toString();
-
-                    // console.log("resize", canvas.width / currentWindowSize.width * window.innerWidth, canvas.height / currentWindowSize.height * window.innerHeight);
-                    // console.log("resize", window.innerWidth * currentCanvasAspect.width, window.innerHeight * currentCanvasAspect.height);
-
-                    // Setup size
-                    // app.renderer.resize(canvas.width / currentWindowSize.width * window.innerWidth, canvas.height / currentWindowSize.height* window.innerHeight);
-                    // app.renderer.resize(window.innerWidth * currentCanvasAspect.width, window.innerHeight * currentCanvasAspect.height);
-                    app.renderer.resize(canvasDiv.clientWidth * currentCanvasAspect.width, canvasDiv.clientHeight * currentCanvasAspect.height);
+                    app.renderer.resize(window.innerWidth * 0.7, window.innerHeight * 0.7);
+                    app.stage.emit("resize");
                 });
                 window.addEventListener("orientationchange", (event: Event) => {
-                    // canvasDiv.style.width = (window.innerWidth * 0.9).toString();
-                    // canvasDiv.style.height = (window.innerHeight * 0.9).toString();
-
-                    // console.log("orientationchange", canvas.width / currentWindowSize.width * window.innerWidth, canvas.height / currentWindowSize.height * window.innerHeight);
-                    // console.log("orientationchange", window.innerWidth * currentCanvasAspect.width, window.innerHeight * currentCanvasAspect.height);
-
-                    // Setup size
-                    // app.renderer.resize(canvas.width / currentWindowSize.width * window.innerWidth, canvas.height / currentWindowSize.height* window.innerHeight);
-                    // app.renderer.resize(window.innerWidth * currentCanvasAspect.width, window.innerHeight * currentCanvasAspect.height);
-                    app.renderer.resize(canvasDiv.clientWidth * currentCanvasAspect.width, canvasDiv.clientHeight * currentCanvasAspect.height);
+                    app.renderer.resize(window.innerWidth * 0.7, window.innerHeight * 0.7);
+                    app.stage.emit("resize");
                 });
-                */
+                /**/
 
                 app.ticker.add(async (delta: number) => {
-                    // @ts-ignore
-                    // PIXI.keyboardManager.update();
                     Keyboard.update();
                 });
 
@@ -384,8 +375,8 @@ ready(() => {
                 image = new MedsurfSprite(app.renderer, canvas, PIXI.Texture.from("https://api.medsurf.iml.unibe.ch/v1/file/slide/2701,2701/image/1800x1800_80.jpeg"), group, loader, 1800, 1800);
                 // image = new MedsurfSprite(app.renderer, canvas, PIXI.Texture.from("https://api.medsurf.iml.unibe.ch/v1/file/slide/10400/image/1800x1800_80.jpeg"), group, loader, 1800, 1800);
                 // Tile BaseSprite
-                imageWidth = 29512;
-                image = new MedsurfTileSprite(app.renderer, canvas, group, loader, 5800, "https://api.medsurf.preview.iml.unibe.ch:443/v1/file/slide/5800/image/", imageWidth, 20512);
+                // imageWidth = 29512;
+                // image = new MedsurfTileSprite(app.renderer, canvas, group, loader, 5800, "https://api.medsurf.preview.iml.unibe.ch:443/v1/file/slide/5800/image/", imageWidth, 20512);
                 // imageWidth = 20944;
                 // image = new MedsurfTileSprite(app.renderer, canvas, group, loader, 5901, "https://api.medsurf.iml.unibe.ch/v1/file/slide/5901/image/", imageWidth, 23965);
 
diff --git a/src/lib/elements/collections/FillCollection.ts b/src/lib/elements/collections/FillCollection.ts
index df591b46de672727184edbe9408e2915a63fb1a7..a572d1d6c3984e295ebcea54c5810874d7d4d140 100644
--- a/src/lib/elements/collections/FillCollection.ts
+++ b/src/lib/elements/collections/FillCollection.ts
@@ -66,7 +66,7 @@ export class FillCollection extends BaseElementContainer<Models.FillCollection>
      */
     protected readonly _radiusAspect: number = 4;
     protected readonly _buttonSizeAspect: number = 24;
-    protected readonly _buttonTextAspect: number = 40;
+    protected readonly _buttonTextAspect: number = 2;
 
     protected readonly _fillAlphaDefault: number = 1;
     protected readonly _fillAlphaInteractive: number = 0.00000001;
@@ -165,7 +165,7 @@ export class FillCollection extends BaseElementContainer<Models.FillCollection>
 
         // Configurations
         const buttonRectangle = new PIXI.Rectangle(0, 0, buttonSize, buttonSize);
-        const buttonFontSize = Math.round(this.canvasWidth / this._buttonTextAspect);
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._colorPicker = new ColorElement(this.loader, this.model.options.fillColor, this.model.options.fillAlpha, true, buttonRectangle, buttonFontSize);
         this._colorPicker.on("color", this._onColor, this);
diff --git a/src/lib/elements/collections/LegendCollection.ts b/src/lib/elements/collections/LegendCollection.ts
index 724135f4b159f381e3f7f84926404b669bc0b396..20303379261d2edea91ab53d5d8c8d123ce3727b 100644
--- a/src/lib/elements/collections/LegendCollection.ts
+++ b/src/lib/elements/collections/LegendCollection.ts
@@ -62,7 +62,7 @@ export class LegendCollection extends BaseElementContainer<Models.LegendCollecti
      */
     protected readonly _radiusAspect: number = 4;
     protected readonly _buttonSizeAspect: number = 24;
-    protected readonly _buttonTextAspect: number = 40;
+    protected readonly _buttonTextAspect: number = 2;
     protected readonly _enumerationPadding: number = 30; // TODO remove
     protected readonly _fillColorDefault: number = 0xFFFFFF;
     protected readonly _fontSizeDefault: number = 12;
@@ -162,7 +162,7 @@ export class LegendCollection extends BaseElementContainer<Models.LegendCollecti
 
         // Configurations
         const buttonRectangle = new PIXI.Rectangle(0, 0, buttonSize, buttonSize);
-        const buttonFontSize = Math.round(this.canvasWidth / this._buttonTextAspect);
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._staticButton = new ButtonElement(this.model.isStatic ? "\uf3c1" : "\uf023", buttonRectangle, buttonFontSize);
         this._staticButton.on("button", this._onStaticButton, this);
diff --git a/src/lib/elements/collections/LegendColumnCollection.ts b/src/lib/elements/collections/LegendColumnCollection.ts
index 012e6938d9b8533e4f6635293493176a9cde093e..f5f132cac3621c635b8a4a924980b05a53904aff 100644
--- a/src/lib/elements/collections/LegendColumnCollection.ts
+++ b/src/lib/elements/collections/LegendColumnCollection.ts
@@ -50,7 +50,7 @@ export class LegendColumnCollection extends BaseContainer {
      */
     protected readonly _radiusAspect: number = 4;
     protected readonly _buttonSizeAspect: number = 24;
-    protected readonly _buttonTextAspect: number = 40;
+    protected readonly _buttonTextAspect: number = 2;
 
     /**
      * Constructor
@@ -117,7 +117,7 @@ export class LegendColumnCollection extends BaseContainer {
 
         // Configurations
         const buttonRectangle = new PIXI.Rectangle(0, 0, buttonSize, buttonSize);
-        const buttonFontSize = Math.round(this.canvasWidth / this._buttonTextAspect);
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._staticButton = new ButtonElement(this.isStatic ? "\uf3c1" : "\uf023", buttonRectangle, buttonFontSize);
         this._staticButton.on("button", this._onStaticButton, this);
diff --git a/src/lib/elements/connections/Line.ts b/src/lib/elements/connections/Line.ts
index 4d8d690d1d3ec3d45c3478e0d441ced7c5ec2a8d..d5b9dd8ac3df668c65c9e4a74725ab1c8dbc468d 100644
--- a/src/lib/elements/connections/Line.ts
+++ b/src/lib/elements/connections/Line.ts
@@ -80,7 +80,7 @@ export class Line extends BaseElementContainer<Models.Line> {
      */
     protected readonly _radiusAspect: number = 4;
     protected readonly _buttonSizeAspect: number = 24;
-    protected readonly _buttonTextAspect: number = 40;
+    protected readonly _buttonTextAspect: number = 2;
 
     protected readonly _strokeWidthDefault: number = 1;
 
@@ -198,7 +198,7 @@ export class Line extends BaseElementContainer<Models.Line> {
 
         // Configurations
         const buttonRectangle = new PIXI.Rectangle(0, 0, buttonSize, buttonSize);
-        const buttonFontSize = Math.round(this.canvasWidth / this._buttonTextAspect);
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._colorPicker = new ColorElement(this.loader, this.model.options.lineColor, this.model.options.lineAlpha, true, buttonRectangle, buttonFontSize);
         this._colorPicker.on("color", this.onColor, this);
diff --git a/src/lib/elements/images/MedsurfSprite.ts b/src/lib/elements/images/MedsurfSprite.ts
index a7f504772dc5afef1574fd350a04c61060920c17..eb17dc8cbd25ac20a21f9424e0ccd74c564a8a1c 100644
--- a/src/lib/elements/images/MedsurfSprite.ts
+++ b/src/lib/elements/images/MedsurfSprite.ts
@@ -96,7 +96,7 @@ export class MedsurfSprite extends BaseSprite {
     protected readonly _visibleImageYAspect: number = 10;
     protected readonly _radiusAspect: number = 4;
     protected readonly _buttonSizeAspect: number = 30;
-    protected readonly _buttonTextAspect: number = 56;
+    protected readonly _buttonTextAspect: number = 2;
 
     /**
      * Constructor
@@ -153,6 +153,7 @@ export class MedsurfSprite extends BaseSprite {
         this.on("endRight", this._endRight, this);
 
         this.moveInteraction = new MoveInteraction(this, true);
+        this.on("startMove", this._onStartMove, this);
         this.on("onMove", this._onMove, this);
 
         this.zoomInteraction = new ZoomInteraction(this);
@@ -175,7 +176,7 @@ export class MedsurfSprite extends BaseSprite {
 
         // Configurations
         const buttonRectangle = new PIXI.Rectangle(0, 0, buttonSize, buttonSize);
-        const buttonFontSize = Math.round(this._canvas.width / this._buttonTextAspect);
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._arrowButton = new ButtonElement("\uf2ec", buttonRectangle, buttonFontSize);
         this._arrowButton.on("button", this._onArrowButton, this);
@@ -210,6 +211,7 @@ export class MedsurfSprite extends BaseSprite {
         this._contextElement.addChild(this._markerButton);
 
         this.on("added", (parent: PIXI.Container) => {
+            parent.on("resize", this._onResize, this);
             parent.on("setDefaultMode", this._setDefaultMode, this);
             this.on("allElementRelease", this._allElementRelease, this);
 
@@ -220,6 +222,7 @@ export class MedsurfSprite extends BaseSprite {
             // TODO get correct mode from parent ??? or from here ???
         });
         this.on("removed", (parent: PIXI.Container) => {
+            parent.off("resize", this._onResize, this);
             parent.off("setDefaultMode", this._setDefaultMode, this);
             this.off("allElementRelease", this._allElementRelease, this);
 
@@ -267,6 +270,7 @@ export class MedsurfSprite extends BaseSprite {
         }
 
         if (this.moveInteraction) {
+            this.off("startMove", this._onStartMove, this);
             this.off("onMove", this._onMove, this);
             delete this.moveInteraction;
         }
@@ -310,6 +314,42 @@ export class MedsurfSprite extends BaseSprite {
         }
     }
 
+    protected _onResize(): void {
+        this._setActualValues();
+        this._fitToScreen(this._canvas.width, this._canvas.height);
+
+        // Context menu
+        const buttonSize = this._canvas.width / this._buttonSizeAspect;
+        this._contextElement.setRadius(buttonSize / this._radiusAspect);
+
+        // Configurations
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
+
+        this._arrowButton.setButtonSize(buttonSize, buttonSize);
+        this._arrowButton.setFontSize(buttonFontSize);
+
+        this._ellipseButton.setButtonSize(buttonSize, buttonSize);
+        this._ellipseButton.setFontSize(buttonFontSize);
+
+        this._rectButton.setButtonSize(buttonSize, buttonSize);
+        this._rectButton.setFontSize(buttonFontSize);
+
+        this._textButton.setButtonSize(buttonSize, buttonSize);
+        this._textButton.setFontSize(buttonFontSize);
+
+        this._lineButton.setButtonSize(buttonSize, buttonSize);
+        this._lineButton.setFontSize(buttonFontSize);
+
+        this._polygonButton.setButtonSize(buttonSize, buttonSize);
+        this._polygonButton.setFontSize(buttonFontSize);
+
+        this._fillPolygonButton.setButtonSize(buttonSize, buttonSize);
+        this._fillPolygonButton.setFontSize(buttonFontSize);
+
+        this._markerButton.setButtonSize(buttonSize, buttonSize);
+        this._markerButton.setFontSize(buttonFontSize);
+    }
+
     /**
      * Set default mode and change to it
      * @param mode
@@ -626,6 +666,12 @@ export class MedsurfSprite extends BaseSprite {
     //</editor-fold>
 
     //<editor-fold desc="Move">
+    /**/
+    protected _onStartMove(event: PIXI.interaction.InteractionEvent): void {
+        this.allItemReleased(event);
+    }
+    /**/
+
     protected _onMove(event: PIXI.interaction.InteractionEvent, dX: number, dY: number): void {
         event.stopPropagation();
 
diff --git a/src/lib/elements/interactions/button/ButtonElement.ts b/src/lib/elements/interactions/button/ButtonElement.ts
index 5a0d513f852b4105b5f788380349a1864481277b..5241b741a0f1abeb4a5af148b56249f1e6941335 100644
--- a/src/lib/elements/interactions/button/ButtonElement.ts
+++ b/src/lib/elements/interactions/button/ButtonElement.ts
@@ -80,6 +80,21 @@ export class ButtonElement extends BaseContainer {
         this.cleanUp();
         super.destroy(options);
     }
+
+    public setButtonSize(width?: number, height?: number): void {
+        if (width) {
+            this._rectangle.width = width;
+        }
+        if (height) {
+            this._rectangle.height = height;
+        }
+        this._iconElement.position.set(this._rectangle.width / 2, this._rectangle.height / 2);
+        this.draw();
+    }
+
+    public setFontSize(fontSize: number): void {
+        this._iconElement.style.fontSize = fontSize;
+    }
     //</editor-fold>
 
     //<editor-fold desc="Private functions">
diff --git a/src/lib/elements/interactions/image/ImageNavigatorElement.ts b/src/lib/elements/interactions/image/ImageNavigatorElement.ts
index 3a855e9dca4f2ed102a8f49e9740ebbfdda57c62..d8ab7617163f85c60860bc60e0afe194da0381ef 100644
--- a/src/lib/elements/interactions/image/ImageNavigatorElement.ts
+++ b/src/lib/elements/interactions/image/ImageNavigatorElement.ts
@@ -46,6 +46,9 @@ export class ImageNavigatorElement extends BaseContainer {
     /**
      * Design
      */
+    protected readonly _buttonSizeAspect: number = 3;
+    protected readonly _buttonTextAspect: number = 2;
+
     protected readonly _lineWidth: number = 1;
     protected readonly _lineColor: number = 0x000000; // 0x4a90e2;
     protected readonly _lineAlpha: number = 1;
@@ -65,7 +68,7 @@ export class ImageNavigatorElement extends BaseContainer {
         // Setup
         this.zIndex = 100;
         this._canvas = canvas;
-        this._navigationHeight = Math.round(canvas.height / 6); // TODO
+        this._navigationHeight = Math.round(this._canvas.height / 6); // TODO
         this._hidden = false;
 
         // Events
@@ -128,25 +131,25 @@ export class ImageNavigatorElement extends BaseContainer {
         this.on("onMove", this._onMove, this);
 
         this.zoomInteraction = new ZoomInteraction(this, false);
-        canvas.addEventListener("wheel", this.zoomInteraction.onZoom.bind(this.zoomInteraction));
         this.on("onZoom", this._onZoom, this);
 
         // Elements
-        const buttonSize = this._navigationHeight / 3;
+        const buttonSize = this._navigationHeight / this._buttonSizeAspect;
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._visibleAreaElement = new PIXI.Graphics();
         this._visibleAreaElement.zIndex = 20;
         this.addChild(this._visibleAreaElement);
 
-        this._zoomInButtonElement = new ButtonElement("\uf00e", new Rectangle(0, 0, buttonSize, buttonSize), 15);
+        this._zoomInButtonElement = new ButtonElement("\uf00e", new Rectangle(0, 0, buttonSize, buttonSize), buttonFontSize);
         this._zoomInButtonElement.on("button", this._onZoomIn, this);
         this.addChild(this._zoomInButtonElement);
 
-        this._toggleButtonElement = new ButtonElement(this._hidden ? "\uf06e" : "\uf070", new Rectangle(0, 0, buttonSize, buttonSize), 15); // f06e
+        this._toggleButtonElement = new ButtonElement(this._hidden ? "\uf06e" : "\uf070", new Rectangle(0, 0, buttonSize, buttonSize), buttonFontSize); // f06e
         this._toggleButtonElement.on("button", this._onToggle, this);
         this.addChild(this._toggleButtonElement);
 
-        this._zoomOutButtonElement = new ButtonElement("\uf010", new Rectangle(0, 0, buttonSize, buttonSize), 15);
+        this._zoomOutButtonElement = new ButtonElement("\uf010", new Rectangle(0, 0, buttonSize, buttonSize), buttonFontSize);
         this._zoomOutButtonElement.on("button", this._onZoomOut, this);
         this.addChild(this._zoomOutButtonElement);
 
@@ -162,13 +165,15 @@ export class ImageNavigatorElement extends BaseContainer {
         });
         */
 
-        this.on("added", () => {
+        this.on("added", (parent: PIXI.Container) => {
             // Events
+            parent.on("resize", this._onResize, this);
             this._wheelMethod = this.zoomInteraction.onZoom.bind(this.zoomInteraction);
-            canvas.addEventListener("wheel", this._wheelMethod);
+            this._canvas.addEventListener("wheel", this._wheelMethod);
         });
-        this.on("removed", () => {
-            canvas.removeEventListener("wheel", this._wheelMethod);
+        this.on("removed", (parent: PIXI.Container) => {
+            parent.off("resize", this._onResize, this);
+            this._canvas.removeEventListener("wheel", this._wheelMethod);
             delete this._wheelMethod;
         });
     }
@@ -210,7 +215,18 @@ export class ImageNavigatorElement extends BaseContainer {
         this._spriteElement.width = this._spriteElement.width / this._spriteElement.height * this._navigationHeight;
         this._spriteElement.height = this._navigationHeight;
 
-        const buttonSize = this._navigationHeight / 3;
+        const buttonSize = this._navigationHeight / this._buttonSizeAspect;
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
+
+        this._zoomInButtonElement.setButtonSize(buttonSize, buttonSize);
+        this._zoomInButtonElement.setFontSize(buttonFontSize);
+
+        this._toggleButtonElement.setButtonSize(buttonSize, buttonSize);
+        this._toggleButtonElement.setFontSize(buttonFontSize);
+
+        this._zoomOutButtonElement.setButtonSize(buttonSize, buttonSize);
+        this._zoomOutButtonElement.setFontSize(buttonFontSize);
+
         this._zoomInButtonElement.position.set(this._spriteElement.width, 0);
         this._toggleButtonElement.position.set(this._spriteElement.width, buttonSize);
         this._zoomOutButtonElement.position.set(this._spriteElement.width, 2 * buttonSize);
@@ -219,6 +235,11 @@ export class ImageNavigatorElement extends BaseContainer {
         this.draw();
     }
 
+    protected _onResize(): void {
+        this._navigationHeight = Math.round(this._canvas.height / 6); // TODO
+        this._onLoaded();
+    }
+
     /**
      * On hover
      * @param event
diff --git a/src/lib/elements/interactions/image/VirtualPointerElement.ts b/src/lib/elements/interactions/image/VirtualPointerElement.ts
index 13f12052968f16748e538e899077c5d913a433ac..e075015da0c444fded2f13e58ee865cb0d0510ee 100644
--- a/src/lib/elements/interactions/image/VirtualPointerElement.ts
+++ b/src/lib/elements/interactions/image/VirtualPointerElement.ts
@@ -48,12 +48,12 @@ export class VirtualPointerElement extends BaseContainer {
         // Setup
         this.zIndex = 100;
         this._canvas = canvas;
-        this._rectangle = new PIXI.Rectangle(0, 0, canvas.width / 10, canvas.width / 14);
+        this._rectangle = new PIXI.Rectangle(0, 0, this._canvas.width / 10, this._canvas.width / 14);
         this._hidden = true;
 
         // Position
         this.pivot.set(0.5, 0.5);
-        this.position.set(canvas.width / 2, canvas.height / 2 - canvas.width / 14);
+        this.position.set(this._canvas.width / 2, this._canvas.height / 2 - this._canvas.width / 14);
         this.rotation = 45 * Math.PI / 180;
 
         // Events
@@ -95,8 +95,15 @@ export class VirtualPointerElement extends BaseContainer {
         this._arrowElement = new PIXI.Graphics();
         this.addChild(this._arrowElement);
 
-        this.on("added", () => {
+        this.on("added", (parent: PIXI.Container) => {
             this.draw();
+
+            // Events
+            parent.on("resize", this._onResize, this);
+        });
+        this.on("removed", (parent: PIXI.Container) => {
+            // Events
+            parent.off("resize", this._onResize, this);
         });
     }
 
@@ -132,6 +139,11 @@ export class VirtualPointerElement extends BaseContainer {
     //</editor-fold>
 
     //<editor-fold desc="Private functions">
+    protected _onResize(): void {
+        this._rectangle = new PIXI.Rectangle(0, 0, this._canvas.width / 10, this._canvas.width / 14);
+        this.draw()
+    }
+
     /**
      * On move
      * @param event
diff --git a/src/lib/elements/interactions/menu/ContextElement.ts b/src/lib/elements/interactions/menu/ContextElement.ts
index 848c4ddf9680289ca304e88fe7d7832f3d199693..21239083bd7cf326f8fdc2d1ad77841ea2e0b715 100644
--- a/src/lib/elements/interactions/menu/ContextElement.ts
+++ b/src/lib/elements/interactions/menu/ContextElement.ts
@@ -61,6 +61,17 @@ export class ContextElement extends BaseContainer {
         this._contextElement.drawRect(0, 0, 200, 200);
         this._contextElement.endFill();
         */
+
+        const count = this.children.length - 1;
+        const radius = this._radius * count;
+        const angle = this._circle / count;
+        this.children.forEach((child, i) => {
+            if (child instanceof ButtonElement || child instanceof ColorElement) {
+                const x = radius * Math.cos((this._start - angle * i) * Math.PI / 180);
+                const y = radius * Math.sin((this._start - angle * i) * Math.PI / 180);
+                child.position.set(x, y);
+            }
+        });
     }
 
     public cleanUp(): void {
@@ -73,6 +84,11 @@ export class ContextElement extends BaseContainer {
         super.destroy(options);
     }
 
+    public setRadius(radius: number): void {
+        this._radius = radius;
+        this.draw();
+    }
+
     public onZoom(event: PIXI.interaction.InteractionEvent, x: number, y: number, factor: number): void {
         this.scale.x *= 1 / factor;
         this.scale.y *= 1 / factor;
@@ -81,16 +97,7 @@ export class ContextElement extends BaseContainer {
 
     //<editor-fold desc="Private functions">
     protected _itemAdded() {
-        const count = this.children.length - 1;
-        const radius = this._radius * count;
-        const angle = this._circle / count;
-        this.children.forEach((child, i) => {
-            if (child instanceof ButtonElement || child instanceof ColorElement) {
-                const x = radius * Math.cos((this._start - angle * i) * Math.PI / 180);
-                const y = radius * Math.sin((this._start - angle * i) * Math.PI / 180);
-                child.position.set(x, y);
-            }
-        });
+        this.draw();
 
         /* TODO center stuff
         const bounds = this.getLocalBounds();
diff --git a/src/lib/elements/interactions/select/SelectElement.ts b/src/lib/elements/interactions/select/SelectElement.ts
index 79d3726eb120178525fb1c1c6ff4bdcd47681c6a..9a41d8701af82af867d385e7143dd2efa429e709 100644
--- a/src/lib/elements/interactions/select/SelectElement.ts
+++ b/src/lib/elements/interactions/select/SelectElement.ts
@@ -212,6 +212,10 @@ export class SelectElement extends BaseContainer {
 
     public showItem(): void {
         this.renderable = true;
+        this._topLineElement.renderable = true;
+        this._rightLineElement.renderable = true;
+        this._bottomLineElement.renderable = true;
+        this._leftLineElement.renderable = true;
 
         // Events
         this.interactive = true;
@@ -219,6 +223,10 @@ export class SelectElement extends BaseContainer {
 
     public hideItem(): void {
         this.renderable = false;
+        this._topLineElement.renderable = false;
+        this._rightLineElement.renderable = false;
+        this._bottomLineElement.renderable = false;
+        this._leftLineElement.renderable = false;
 
         // Events
         this.interactive = false;
diff --git a/src/lib/elements/positionings/PositionPoint.ts b/src/lib/elements/positionings/PositionPoint.ts
index e2b1a7e6f5761bcc34f8bfaa22909332bd329cda..46e8d7f2e96a85dafa646f7a914774ce2a560ec8 100644
--- a/src/lib/elements/positionings/PositionPoint.ts
+++ b/src/lib/elements/positionings/PositionPoint.ts
@@ -66,7 +66,7 @@ export class PositionPoint extends BaseElementContainer<Models.PositionPoint> {
      */
     protected readonly _radiusAspect: number = 4;
     protected readonly _buttonSizeAspect: number = 24;
-    protected readonly _buttonTextAspect: number = 40;
+    protected readonly _buttonTextAspect: number = 2;
 
     protected readonly _radius: number = 4;
     protected readonly _radiusSelected: number = 2;
@@ -150,7 +150,7 @@ export class PositionPoint extends BaseElementContainer<Models.PositionPoint> {
 
         // Configurations
         const buttonRectangle = new PIXI.Rectangle(0, 0, buttonSize, buttonSize);
-        const buttonFontSize = Math.round(this.canvasWidth / this._buttonTextAspect);
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._selftestButton = new ButtonElement(this.isSelftest ? "\uf4b3" : "\uf075", buttonRectangle, buttonFontSize);
         this._selftestButton.on("button", this.onSelftestButton, this);
diff --git a/src/lib/elements/primitives/ArrowPrimitive.ts b/src/lib/elements/primitives/ArrowPrimitive.ts
index a810088a4d368790745eb0c72ef473e78e8f79ff..b863be7d340c2735bdab3a576587161ff5bbad71 100644
--- a/src/lib/elements/primitives/ArrowPrimitive.ts
+++ b/src/lib/elements/primitives/ArrowPrimitive.ts
@@ -77,7 +77,7 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive>
      */
     protected readonly _radiusAspect: number = 4;
     protected readonly _buttonSizeAspect: number = 24;
-    protected readonly _buttonTextAspect: number = 40;
+    protected readonly _buttonTextAspect: number = 2;
 
     protected readonly _strokeWidthDefault: number = 2;
 
@@ -226,7 +226,7 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive>
 
         // Configurations
         const buttonRectangle = new PIXI.Rectangle(0, 0, buttonSize, buttonSize);
-        const buttonFontSize = Math.round(this.canvasWidth / this._buttonTextAspect);
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._lineColorPicker = new ColorElement(this.loader, this.model.options.lineColor, this.model.options.lineAlpha, true, buttonRectangle, buttonFontSize);
         this._lineColorPicker.on("color", this._onLineColor, this);
diff --git a/src/lib/elements/primitives/EllipsePrimitive.ts b/src/lib/elements/primitives/EllipsePrimitive.ts
index 05a908896b5f4d1cebf21cf1ec0a6e5a27d49e12..eef2c26b9a118a372b0e349c45c29fa0837ada18 100644
--- a/src/lib/elements/primitives/EllipsePrimitive.ts
+++ b/src/lib/elements/primitives/EllipsePrimitive.ts
@@ -74,7 +74,7 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti
      */
     protected readonly _radiusAspect: number = 4;
     protected readonly _buttonSizeAspect: number = 24;
-    protected readonly _buttonTextAspect: number = 40;
+    protected readonly _buttonTextAspect: number = 2;
 
     protected readonly _strokeWidthDefault: number = 2;
 
@@ -212,7 +212,7 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti
 
         // Configurations
         const buttonRectangle = new PIXI.Rectangle(0, 0, buttonSize, buttonSize);
-        const buttonFontSize = Math.round(this.canvasWidth / this._buttonTextAspect);
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._lineColorPicker = new ColorElement(this.loader, this.model.options.lineColor, this.model.options.lineAlpha, true, buttonRectangle, buttonFontSize);
         this._lineColorPicker.on("color", this._onLineColor, this);
diff --git a/src/lib/elements/primitives/LegendTextPrimitive.ts b/src/lib/elements/primitives/LegendTextPrimitive.ts
index d511ba61d6c44eb2595023602ee12c5df916f0c1..4dfc3968c2c493e554f9ccbab7e748a530f1592c 100644
--- a/src/lib/elements/primitives/LegendTextPrimitive.ts
+++ b/src/lib/elements/primitives/LegendTextPrimitive.ts
@@ -81,7 +81,7 @@ export class LegendTextPrimitive extends BaseElementContainer<Models.LegendItem>
      */
     protected readonly _radiusAspect: number = 4;
     protected readonly _buttonSizeAspect: number = 24;
-    protected readonly _buttonTextAspect: number = 40;
+    protected readonly _buttonTextAspect: number = 2;
 
     protected readonly _fillColorSelftest: number = 0xFFC67B;
     protected readonly _fillColorSelftestSelected: number = 0x4ae29c;
@@ -179,7 +179,7 @@ export class LegendTextPrimitive extends BaseElementContainer<Models.LegendItem>
 
         // Configurations
         const buttonRectangle = new PIXI.Rectangle(0, 0, buttonSize, buttonSize);
-        const buttonFontSize = Math.round(this.canvasWidth / this._buttonTextAspect);
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._colorPicker = new ColorElement(this.loader, this.model.style.fill, undefined, false, buttonRectangle, buttonFontSize);
         this._colorPicker.on("color", this._onColor, this);
diff --git a/src/lib/elements/primitives/RectanglePrimitive.ts b/src/lib/elements/primitives/RectanglePrimitive.ts
index dde27b60157ad3a81a7bc9a34b649043a3ef0cd3..cdf64d6b647cd0786c3306c9229e564109bc3cd4 100644
--- a/src/lib/elements/primitives/RectanglePrimitive.ts
+++ b/src/lib/elements/primitives/RectanglePrimitive.ts
@@ -74,7 +74,7 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri
      */
     protected readonly _radiusAspect: number = 4;
     protected readonly _buttonSizeAspect: number = 24;
-    protected readonly _buttonTextAspect: number = 40;
+    protected readonly _buttonTextAspect: number = 2;
 
     protected readonly _strokeWidthDefault: number = 2;
 
@@ -212,7 +212,7 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri
 
         // Configurations
         const buttonRectangle = new PIXI.Rectangle(0, 0, buttonSize, buttonSize);
-        const buttonFontSize = Math.round(this.canvasWidth / this._buttonTextAspect);
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._lineColorPicker = new ColorElement(this.loader, this.model.options.lineColor, this.model.options.lineAlpha, true, buttonRectangle, buttonFontSize);
         this._lineColorPicker.on("color", this._onLineColor, this);
diff --git a/src/lib/elements/primitives/TextPrimitive.ts b/src/lib/elements/primitives/TextPrimitive.ts
index 9d2cc7c3a3ffe3ac7847295dd1a5273eb8027956..22eb00c306097cc31e84e958cedb1e4f50b9ecdb 100644
--- a/src/lib/elements/primitives/TextPrimitive.ts
+++ b/src/lib/elements/primitives/TextPrimitive.ts
@@ -87,7 +87,7 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive> {
      */
     protected readonly _radiusAspect: number = 4;
     protected readonly _buttonSizeAspect: number = 24;
-    protected readonly _buttonTextAspect: number = 40;
+    protected readonly _buttonTextAspect: number = 2;
     protected readonly _fillColorDefault: number = 0xFFFFFF;
     protected readonly _fillColorSelftest: number = 0xFFC67B;
     protected readonly _fillColorSelftestSelected: number = 0x4ae29c;
@@ -230,7 +230,7 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive> {
 
         // Configurations
         const buttonRectangle = new PIXI.Rectangle(0, 0, buttonSize, buttonSize);
-        const buttonFontSize = Math.round(this.canvasWidth / this._buttonTextAspect);
+        const buttonFontSize = Math.round(buttonSize / this._buttonTextAspect);
 
         this._colorPicker = new ColorElement(this.loader, this.model.style.fill, undefined, false, buttonRectangle, buttonFontSize);
         this._colorPicker.on("color", this._onColor, this);
diff --git a/src/public/index.html b/src/public/index.html
index c908b795147ed4510d951661b81dec786cbdd9e0..4a871dc091be6a47067480550ef39f5a2ac6ac8a 100644
--- a/src/public/index.html
+++ b/src/public/index.html
@@ -354,8 +354,8 @@
     </head>
     <body>
         <!-- <div id="medsurf_canvas_div" style="width: 70vw; height: 70vh;"> -->
-        <div id="medsurf_canvas_div" style="width: 70vw; height: 800px;">
-            <canvas id="medsurf_canvas" oncontextmenu="return false;" style="width: 100%; height: 100%;"></canvas>
+        <div id="medsurf_canvas_div" style="width: 70vw; height: 70vh;">
+            <canvas id="medsurf_canvas" oncontextmenu="return false;"></canvas>
         </div>
         <button id="button_default">Default</button>
         <button id="button_marker">Marker</button>