diff --git a/contents/code/tile.js b/contents/code/tile.js
index 7ebcef07503fe4a3fdd8af088acb10e49dc80950..1f529ca263cc0df4e99a9baaae0cc74b2276ac1f 100644
--- a/contents/code/tile.js
+++ b/contents/code/tile.js
@@ -225,6 +225,9 @@ Tile.prototype.onClientKeepBelowChanged = function(client) {
 };
 
 Tile.prototype.onClientFullScreenChanged = function(client) {
+	// Let fullscreen windows stay _above_ others
+	client.keepAbove = client.fullScreen;
+	client.keepBelow = !client.fullScreen;
     this._recomputeForcedFloating(client);
 };
 
diff --git a/contents/code/tiling.js b/contents/code/tiling.js
index 85fdd5e5171eceec72158b73aa27ca1c5196bcc8..d6879a1389b34dc408d64cbdc3704596fb775985 100644
--- a/contents/code/tiling.js
+++ b/contents/code/tiling.js
@@ -180,6 +180,11 @@ Tiling.prototype._updateAllTiles = function() {
     // Set the position/size of all tiles
 	if (this.active) {
 		for (var i = 0; i < this.layout.tiles.length; i++) {
+			if (this.tiles[i].clients[0].fullScreen) {
+				this.layout.tiles[i]._savedGeometry = this.layout.tiles[i].rectangle;
+				this.layout.tiles[i].rectangle = this.layout.screenRectangle;
+				break;
+			}
 			var currentRect = this.tiles[i].clients[0].geometry;
 			var newRect = this.layout.tiles[i].rectangle;
 			if (! newRect) {