diff --git a/locale/mtimer.de.tr b/locale/mtimer.de.tr
index 0eab6b2..23df852 100644
--- a/locale/mtimer.de.tr
+++ b/locale/mtimer.de.tr
@@ -4,7 +4,6 @@
 Color=Farbe
 Ingame Time Format=Spielzeit-Format
 Open Main Menu=Hauptmenü öffnen
-Position=Ausrichtung
 Real-World Time Format=Realzeit-Format
 Host Time Format=Hostzeit-Format
 Reset Everything=Alles zurücksetzen
@@ -15,19 +14,29 @@ Session Start Time Format=Sitzungsstartzeit-Format
 Timer Format=Timerformat
 Timezone Offset=Zeitzonenunterschied
 Custom Timer=Individueller Timer
-Visibility=Sichtbarkeit
 mTimer Configuration=mTimer-Konfiguration
 
-# Visibility
+# Dialog: Visibility
+Visibility=Sichtbarkeit
 Make invisible=Verbergen
 Make visible=Anzeigen
 The timer is currently @1.=Der Timer ist aktuell @1.
 visible=sichtbar
 invisible=verborgen
 
+# Dialog: Position
+Position=Ausrichtung
+Click the position you want to place the timer at.=Auf die Stelle klicken, an der der Timer angezeigt werden soll.
+Current position: @1=Aktuelle Position: @1
+top=Oben
+middle=mittig
+bottom=Unten
+left=links
+center=zentriert
+right=rechts
+
 # Information & Warnings
 30 minutes @= 0.5, 60 minutes @= 1=30 Minuten @= 0.5, 60 Minuten @= 1
-Click the position you want to place the timer at.=Auf die Stelle klicken, an der der Timer angezeigt werden soll.
 Use `@1` format only!=Ausschließlich `@1`-Format benutzen!
 “Arbitrary” values are possible.=Es sind „beliebige“ Werte möglich.
 
diff --git a/system/formspecs/formspec_creation.lua b/system/formspecs/formspec_creation.lua
index c5d24d5..03d2397 100644
--- a/system/formspecs/formspec_creation.lua
+++ b/system/formspecs/formspec_creation.lua
@@ -27,38 +27,68 @@ local esc = minetest.formspec_escape
 mtimer.dialog.set_visibility = function (player_name)
     local player = minetest.get_player_by_name(player_name)
     local visible = player:get_meta():get_string(m.meta.visible.key)
-    local timer_status = visible == 'true' and S('visible') or S('invisible')
+    local status = visible == 'true' and S('visible') or S('invisible')
 
     mtimer.show_formspec('mtimer:set_visibility', {
         title = S('Visibility'),
         show_to = player_name,
         formspec = {
-             mtimer.get_icon_button('set_visible', { width = 4, label = S('Make visible') }),
-             mtimer.get_icon_button('set_invisible', { width = 4, label = S('Make invisible'), container = { left = 4.25 } }),
-             'label[0,1.25;'..S('The timer is currently @1.', timer_status)..']'
+             mtimer.get_icon_button('set_visible', {
+                 width = 4,
+                 label = S('Make visible')
+             }),
+             mtimer.get_icon_button('set_invisible', {
+                 width = 4,
+                 label = S('Make invisible'),
+                 container = { left = 4.25 }
+             }),
+             'label[0,1.25;'..S('The timer is currently @1.', status)..']'
         }
     })
 end
 
 
 mtimer.dialog.set_position = function (player_name)
+    local player = minetest.get_player_by_name(player_name)
+    local howto = S('Click the position you want to place the timer at.')
+
+    -- Get current position name
+    local p_value = player:get_meta():get_string(m.meta.position.key)
+    local p_names = {
+        ['t'] = S('top'),  ['m'] = S('middle'), ['b'] = S('bottom'),
+        ['l'] = S('left'), ['c'] = S('center'), ['r'] = S('right')
+    }
+    local p_name = p_names[p_value:sub(1,1)]..' '..p_names[p_value:sub(2,2)]
+    local p_info = S('Current position: @1', p_name)
+
+    -- Set up image
+    local image = 'mtimer_positions_orientation.png'
+    local i_width = 10
+    local i_height = 6
+
+    -- Return the parsed button
+    local b_define = function(t, l, p)
+        return ('image_button[+l,+t;+w,+h;+i;pos_+p;d;;false]'):gsub('%+%w', {
+            ['+l'] = (l - 1) * (i_width / 3),
+            ['+t'] = (t - 1) * (i_height / 3),
+            ['+w'] = i_width / 3,
+            ['+h'] = i_height / 3,
+            ['+i'] = 'mtimer_transparent.png',
+            ['+p'] = p,
+        })
+    end
+
     mtimer.show_formspec('mtimer:set_position', {
         title = S('Position'),
-        height = 5.35,
-        width = 8.25,
+        height = 7.2,
+        width = 10,
         show_to = player_name,
         formspec = {
-            'image_button[0,0;8,4.5 ;mtimer_positions_orientation.png;pos_xx;;;false]',
-            'image_button[0,0;2.67,1.5;mtimer_transparent.png;pos_tl;;;false]',         -- TL
-            'image_button[2.67,0;2.67,1.5;mtimer_transparent.png;pos_tc;;;false]',      -- TC
-            'image_button[5.34,0;2.67,1.5;mtimer_transparent.png;pos_tr;;;false]',      -- TR
-            'image_button[0,1.5;2.67,1.5;mtimer_transparent.png;pos_ml;;;false]',       -- ML
-            'image_button[2.67,1.5;2.67,1.5;mtimer_transparent.png;pos_mc;;;false]',    -- MC
-            'image_button[5.34,1.5;2.67,1.5;mtimer_transparent.png;pos_mr;;;false]',    -- MR
-            'image_button[0,3;2.67,1.5;mtimer_transparent.png;pos_bl;;;false]',         -- BL
-            'image_button[2.67,3;2.67,1.5;mtimer_transparent.png;pos_bc;;;false]',      -- BC
-            'image_button[5.34,3;2.67,1.5;mtimer_transparent.png;pos_br;;;false]',      -- BR
-            'label[0,4.75;'..S('Click the position you want to place the timer at.')..']'
+            'image[0,0;'..i_width..','..i_height..';'..image..']',
+            b_define(1, 1, 'tl'), b_define(1, 2, 'tc'), b_define(1, 3, 'tr'),
+            b_define(2, 1, 'ml'), b_define(2, 2, 'mc'), b_define(2, 3, 'mr'),
+            b_define(3, 1, 'bl'), b_define(3, 2, 'bc'), b_define(3, 3, 'br'),
+            'label[0,6.5;'..howto..'\n'..p_info..']'
         }
     })
 end
diff --git a/system/on_receive_fields.lua b/system/on_receive_fields.lua
index 0e99b65..5b35fc7 100644
--- a/system/on_receive_fields.lua
+++ b/system/on_receive_fields.lua
@@ -53,6 +53,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
                 if new_pos ~= 'xx' then meta:set_string(attr.key, new_pos) end
             end
         end
+        if not fields.quit then d.set_position(name) end
     end