diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml
index ece0768..b5fcdbe 100644
--- a/app/qml/PreprocessedTerminal.qml
+++ b/app/qml/PreprocessedTerminal.qml
@@ -23,6 +23,8 @@ import QtQuick.Controls 1.1
 
 import QMLTermWidget 1.0
 
+import "utils.js" as Utils
+
 Item{
     id: terminalContainer
 
@@ -43,10 +45,10 @@ Item{
     anchors.bottomMargin: frame.displacementBottom * appSettings.windowScaling
 
     //The blur effect has to take into account the framerate
-    property real mBlur: appSettings.burnIn
-    property real motionBlurCoefficient: (_maxBlurCoefficient * Math.sqrt(mBlur) + _minBlurCoefficient * (1 - Math.sqrt(mBlur)))
-    property real _minBlurCoefficient: 0.50
-    property real _maxBlurCoefficient: 0.90
+    property real mBlur: Math.sqrt(appSettings.burnIn)
+    property real motionBlurCoefficient: Utils.lint(_minBlurCoefficient, _maxBlurCoefficient, mBlur)
+    property real _minBlurCoefficient: 0.2
+    property real _maxBlurCoefficient: 0.02
 
     property size terminalSize: kterminal.terminalSize
     property size fontMetrics: kterminal.fontMetrics
@@ -244,6 +246,12 @@ Item{
 
             Timer{
                 id: livetimer
+
+                // The interval assumes 60 fps. This is the time needed burnout a white pixel.
+                // We multiply 1.1 to have a little bit of margin over the theoretical value.
+                // This solution is not extremely clean, but it's probably the best to avoid measuring fps.
+
+                interval: (1 / motionBlurCoefficient) * 60 * 1.1
                 running: true
                 onTriggered: _blurredSourceEffect.live = false;
             }
@@ -287,7 +295,7 @@ Item{
         sourceComponent: ShaderEffect {
             property variant txt_source: kterminalSource
             property variant blurredSource: blurredSourceLoader.item
-            property real blurCoefficient: (1.0 - motionBlurCoefficient)
+            property real blurCoefficient: motionBlurCoefficient
 
             blending: false
 
@@ -307,10 +315,10 @@ Item{
                 "void main() {" +
                     "vec2 coords = qt_TexCoord0;" +
                     "vec3 origColor = texture2D(txt_source, coords).rgb;" +
-                    "vec3 blur_color = texture2D(blurredSource, coords).rgb * (1.0 - blurCoefficient);" +
+                    "vec3 blur_color = texture2D(blurredSource, coords).rgb - vec3(blurCoefficient);" +
                     "vec3 color = min(origColor + blur_color, max(origColor, blur_color));" +
 
-                    "gl_FragColor = vec4(color, step(0.02, rgb2grey(color - origColor)));" +
+                    "gl_FragColor = vec4(color, rgb2grey(color - origColor));" +
                 "}"
 
             onStatusChanged: if (log) console.log(log) //Print warning messages
diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml
index aa024b0..e9b91c3 100644
--- a/app/qml/ShaderTerminal.qml
+++ b/app/qml/ShaderTerminal.qml
@@ -26,6 +26,8 @@ ShaderEffect {
     property ShaderEffectSource blurredSource
     property ShaderEffectSource bloomSource
 
+    property real liveBlur: blurredSource && blurredSource.live ? 1.0 : 0.0
+
     property color fontColor: appSettings.fontColor
     property color backgroundColor: appSettings.backgroundColor
     property real bloom: appSettings.bloom * 2.5
@@ -160,7 +162,8 @@ ShaderEffect {
             uniform highp sampler2D bloomSource;
             uniform lowp float bloom;" : "") +
         (burnIn !== 0 ? "
-            uniform sampler2D blurredSource;" : "") +
+            uniform sampler2D blurredSource;
+            uniform lowp float liveBlur;" : "") +
         (staticNoise !== 0 ? "
             uniform highp float staticNoise;" : "") +
         (((staticNoise !== 0 || jitter !== 0 || rbgShift)
@@ -266,7 +269,7 @@ ShaderEffect {
             "vec3 txt_color = texture2D(source, txt_coords).rgb;" +
 
             (burnIn !== 0 ? "
-                vec4 txt_blur = texture2D(blurredSource, txt_coords);
+                vec4 txt_blur = liveBlur * texture2D(blurredSource, txt_coords);
                 txt_color = txt_color + txt_blur.rgb * txt_blur.a;"
             : "") +