diff --git a/neercs/video/postfx.lolfx b/neercs/video/postfx.lolfx
index b56c7d1..3b3c710 100644
--- a/neercs/video/postfx.lolfx
+++ b/neercs/video/postfx.lolfx
@@ -32,6 +32,9 @@ uniform vec3 corner;
 uniform float sync;
 uniform float beat;
 
+const float PI=3.14159265358979323846;
+vec2 angle=screen_size*PI;
+
 vec2 screen(in vec2 p,in float bend,in float radius)
 {
     float d=bend+sync*0.0625+beat*0.0375;
@@ -89,10 +92,10 @@ void main(void)
     if(k>r_p&&k<r_p+r_h) r=mix(c3,c4,(k-r_p)*(1/r_h));
     if(k>=r_p+r_h) r=mix(c4,c5,k*((k-(r_p+r_h))/(r_p-r_h)));
 
-    c*=moire_h.x+moire_h.y*sin(z.y*float(screen_size.y*moire_h.z)/ratio_2d.y)*sin(0.5+z.x*float(screen_size.x*moire_h.w)/ratio_2d.x); // moire h
-    c*=moire_v.x+moire_v.y*sin(z.x*float(screen_size.x*moire_v.z)/ratio_2d.x)*sin(0.5+z.y*float(screen_size.y*moire_v.w)/ratio_2d.y); // moire v
-    c*=scanline_h.x+scanline_h.y*cos(z.y*float(screen_size.y*scanline_h.z+scanline_h.w)/ratio_2d.y); // scanline h
-    c*=scanline_v.x+scanline_v.y*cos(z.x*float(screen_size.x*scanline_v.z+scanline_v.w)/ratio_2d.x); // scanline v
+    c*=moire_h.x+moire_h.y*sin(z.y*float(angle.y*moire_h.z)/ratio_2d.y+PI); // moire h
+    c*=moire_v.x+moire_v.y*sin(z.x*float(angle.x*moire_v.z)/ratio_2d.x+PI); // moire v
+    c*=scanline_h.x+scanline_h.y*cos(z.y*float(angle.y*scanline_h.z+scanline_h.w)/ratio_2d.y); // scanline h
+    c*=scanline_v.x+scanline_v.y*cos(z.x*float(angle.x*scanline_v.z+scanline_v.w)/ratio_2d.x); // scanline v
     c+=r*gradient.z;                                         // gradient
     c*=mix(1.0,mask,vignetting);                             // vignetting
     c*=letterbox(z,corner.x+2.0,corner.y,corner.z);          // corner
diff --git a/neercs/video/render.cpp b/neercs/video/render.cpp
index a4f517b..6bde37c 100644
--- a/neercs/video/render.cpp
+++ b/neercs/video/render.cpp
@@ -157,7 +157,6 @@ char const *setup_text[]={
         "",
         "",
     "remanence",
-        "enable",
         "buffer new frame",
         "buffer old frame",
         "source mix",
@@ -165,8 +164,8 @@ char const *setup_text[]={
         "",
         "",
         "",
+        "",
     "glow",
-        "enable",
         "source mix",
         "glow mix",
         "large center",
@@ -174,8 +173,8 @@ char const *setup_text[]={
         "small center",
         "small corner",
         "",
+        "",
     "blur",
-        "enable",
         "blur center",
         "blur corner",
         "",
@@ -183,8 +182,8 @@ char const *setup_text[]={
         "",
         "",
         "",
+        "",
     "screen",
-        "enable",
         "deform ratio",
         "zoom base",
         "corner width",
@@ -192,8 +191,8 @@ char const *setup_text[]={
         "corner blur",
         "vignetting",
         "",
+        "",
     "copper",
-        "enable",
         "base",
         "variable",
         "repeat",
@@ -201,6 +200,7 @@ char const *setup_text[]={
         "color r",
         "color g",
         "color b",
+        "",
     "color",
         "filter red",
         "filter green",
@@ -211,7 +211,6 @@ char const *setup_text[]={
         "grayscale",
         "aberration",
     "noise",
-        "enable",
         "offset h",
         "offset v",
         "noise",
@@ -219,6 +218,7 @@ char const *setup_text[]={
         "retrace length",
         "retrace speed",
         "",
+        "",
     "ghost",
         "back x",
         "back y",
@@ -274,14 +274,15 @@ char const *setup_text[]={
         "",
         "",
     "radial",
-        "enable",
         "distance",
         "fade ratio",
         "iteration",
         "strength",
         "",
         "",
-        ""
+        "",
+        "",
+    ""
     };
 
 vec4 setup_conf[]={ // setup variable [start,end,step,value]
@@ -295,7 +296,6 @@ vec4(0), /* main */
     vec4(0),
     vec4(0),
 vec4(0), /* remanence */
-    vec4(0, 1, 1, 1),
     vec4(0.0f, 1.0f, 0.1f, 0), // buffer.x
     vec4(0.0f, 1.0f, 0.1f, 0), // buffer.y
     vec4(0.0f, 1.0f, 0.1f, 0), // remanence.x
@@ -303,8 +303,8 @@ vec4(0), /* remanence */
     vec4(0),
     vec4(0),
     vec4(0),
+    vec4(0),
 vec4(0), /* glow */
-    vec4(0, 1, 1, 1),
     vec4(0.0f, 1.0f, 0.1f, 0), // glow_mix.x
     vec4(0.0f, 1.0f, 0.1f, 0), // glow_mix.y
     vec4(0.0f, 4.0f, 0.1f, 0), // glow_large.x
@@ -312,8 +312,8 @@ vec4(0), /* glow */
     vec4(0.0f, 2.0f, 0.1f, 0), // glow_small.x
     vec4(0.0f, 2.0f, 0.1f, 0), // glow_small.y
     vec4(0),
+    vec4(0),
 vec4(0), /* blur */
-    vec4(0, 1, 1, 1),
     vec4(0, 2, 0.05f, 0), // blur.x
     vec4(0, 2, 0.05f, 0), // blur.y
     vec4(0),
@@ -321,8 +321,8 @@ vec4(0), /* blur */
     vec4(0),
     vec4(0),
     vec4(0),
+    vec4(0),
 vec4(0), /* screen */
-    vec4(0, 1, 1, 1),
     vec4(0.0f, 1.0f, 0.05f, 0), // postfx_deform.x
     vec4(0.2f, 0.7f, 0.01f, 0), // postfx_deform.y
     vec4(0.0f, 4.0f, 0.10f, 0), // postfx_corner.x
@@ -330,8 +330,8 @@ vec4(0), /* screen */
     vec4(0.8f, 1.0f, 0.01f, 0), // postfx_corner.z
     vec4(0.0f, 1.0f, 0.10f, 0), // postfx_vignetting
     vec4(0),
+    vec4(0),
 vec4(0), /* copper */
-    vec4(0, 1, 1, 1),
     vec4(0.0f, 1.0f, 0.05f, 0), // copper_copper.x
     vec4(0.0f, 1.0f, 0.05f, 0), // copper_copper.y
     vec4(0.0f, 1.0f, 0.02f, 0), // copper_copper.z
@@ -339,6 +339,7 @@ vec4(0), /* copper */
     vec4(0.0f, 4.0f, 0.25f, 0), // copper_mask_color.x
     vec4(0.0f, 4.0f, 0.25f, 0), // copper_mask_color.y
     vec4(0.0f, 4.0f, 0.25f, 0), // copper_mask_color.z
+    vec4(0),
 vec4(0), /* color */
     vec4( 0.0f, 1.0f, 0.05f, 0), // color_filter.x
     vec4( 0.0f, 1.0f, 0.05f, 0), // color_filter.y
@@ -349,7 +350,6 @@ vec4(0), /* color */
     vec4( 0.0f, 1.0f, 0.05f, 0), // color_color.w
     vec4( 0.0f, 8.0f, 0.50f, 0), // postfx_aberration
 vec4(0), /* noise */
-    vec4(0, 1, 1, 1),
     vec4(0.0f, 4.0f, 0.50f, 0), // noise_offset.x
     vec4(0.0f, 4.0f, 0.50f, 0), // noise_offset.y
     vec4(0.0f, 0.5f, 0.05f, 0), // noise_noise
@@ -357,6 +357,7 @@ vec4(0), /* noise */
     vec4(0.0f, 8.0f, 0.50f, 0), // noise_retrace.y
     vec4(0.0f, 4.0f, 0.25f, 0), // noise_retrace.z
     vec4(0),
+    vec4(0),
 vec4(0), /* ghost */
     vec4(-2.0f, 2.0f, 0.10f, 0), // postfx_ghost1.x
     vec4(-2.0f, 2.0f, 0.10f, 0), // postfx_ghost1.y
@@ -387,23 +388,22 @@ vec4(0), /* glass */
 vec4(0), /* moire */
     vec4( 0.5f, 1.0f, 0.05f, 0), // postfx_moire_h.x
     vec4(-0.5f, 0.5f, 0.05f, 0), // postfx_moire_h.y
-    vec4( 0.0f, 4.0f, 0.50f, 0), // postfx_moire_h.z
-    vec4( 0.0f, 4.0f, 0.50f, 0), // postfx_moire_h.w
+    vec4( 0.0f, 1.0f, 0.05f, 0), // postfx_moire_h.z
+    vec4( 0.0f, 1.0f, 0.05f, 0), // postfx_moire_h.w
     vec4( 0.5f, 1.0f, 0.05f, 0), // postfx_moire_v.x
     vec4(-0.5f, 0.5f, 0.05f, 0), // postfx_moire_v.y
-    vec4( 0.0f, 4.0f, 0.50f, 0), // postfx_moire_v.z
-    vec4( 0.0f, 4.0f, 0.50f, 0), // postfx_moire_v.w
+    vec4( 0.0f, 1.0f, 0.05f, 0), // postfx_moire_v.z
+    vec4( 0.0f, 1.0f, 0.05f, 0), // postfx_moire_v.w
 vec4(0), /* scanline */
     vec4( 0.5f, 1.0f, 0.05f, 0), // postfx_scanline_h.x
     vec4(-0.5f, 0.5f, 0.05f, 0), // postfx_scanline_h.y
-    vec4( 0.0f, 4.0f, 0.50f, 0), // postfx_scanline_h.z
-    vec4( 0.0f, 4.0f, 0.50f, 0), // postfx_scanline_h.w
+    vec4( 0.0f, 1.0f, 0.05f, 0), // postfx_scanline_h.z
+    vec4( 0.0f, 1.0f, 0.05f, 0), // postfx_scanline_h.w
     vec4( 0.5f, 1.0f, 0.05f, 0), // postfx_scanline_v.x
     vec4(-0.5f, 0.5f, 0.05f, 0), // postfx_scanline_v.y
-    vec4( 0.0f, 4.0f, 0.50f, 0), // postfx_scanline_v.z
-    vec4( 0.0f, 4.0f, 0.50f, 0), // postfx_scanline_v.w
+    vec4( 0.0f, 1.0f, 0.05f, 0), // postfx_scanline_v.z
+    vec4( 0.0f, 1.0f, 0.05f, 0), // postfx_scanline_v.w
 vec4(0), /* mirror */
-    vec4(0, 1, 1, 1),
     vec4(0.0f, 2.0f, 0.05f, 0), // mirror.x
     vec4(0.0f, 2.0f, 0.05f, 0), // mirror.y
     vec4(0.0f, 1.0f, 0.05f, 0), // mirror.z
@@ -411,8 +411,8 @@ vec4(0), /* mirror */
     vec4(0),
     vec4(0),
     vec4(0),
+    vec4(0),
 vec4(0), /* radial blur */
-    vec4(0, 1, 1, 1),
     vec4(2.0f, 8.0f, 0.25f, 0), // radial.x
     vec4(0.8f, 1.0f, 0.01f, 0), // radial.y
     vec4(2.0f,32.0f, 2.00f, 0), // radial.z
@@ -420,6 +420,7 @@ vec4(0), /* radial blur */
     vec4(0),
     vec4(0),
     vec4(0),
+    vec4(0),
 vec4(0) /* ? */
 };
 
@@ -430,45 +431,40 @@ float theme_var[]={
     0,0,                      // border
     0,0,0,0,
 0,
-    1,                        // m_shader_remanence
     1.0f,0.8f,                // buffer
     0.0f,0.0f,                // remanence
-    0,0,0,
+    0,0,0,0,
 0,
-    1,                        // m_shader_glow
     0.5f,0.0f,                // glow_mix
     0.0f,0.0f,                // glow_large
     0.0f,0.0f,                // glow_small
-    0,
+    0,0,
 0,
-    1,                        // m_shader_blur
     0.0f,0.0f,                // blur
-    0,0,0,0,0,
+    0,0,0,0,0,0,
 0,
-    1,                        // m_shader_postfx
     0.0f,0.5f,                // postfx_deform
     0.0f,1.0f,1.0f,           // postfx_corner
     0.0f,                     // postfx_vignetting
-    0,
+    0,0,
 0,
-    1,                        // m_shader_copper
     0.75f,0.25f,0.42f,4.0f,   // copper_copper
     4.0f,4.0f,4.0f,           // copper_mask_color
+    0,
 0,
     1.0f,1.0f,1.0f,           // color_filter
     1.0f,1.0f,0.0f,0.0f,      // color_color
     0.0f,                     // postfx_aberration
 0,
-    1,                        // m_shader_noise
     0.0f,0.0f,                // noise_offset
     0.0f,                     // noise_noise
     0.0f,0.0f,0.0f,           // noise_retrace
-    0,
+    0,0,
 0,
     0.0f,0.0f,0.0f,0.0f,      // postfx_ghost1
     0.0f,0.0f,0.0f,0.0f,      // postfx_ghost2
 0,
-    0.5f,0.0f,0.0f ,          // postfx_gradient
+    0.5f,0.0f,0.0f,           // postfx_gradient
     0.0f,0.0f,0.0f,           // postfx_gradient_color
     0,0,
 0,
@@ -481,53 +477,46 @@ float theme_var[]={
     1.0f,0.0f,0.0f,0.0f,      // postfx_scanline_h
     1.0f,0.0f,0.0f,0.0f,      // postfx_scanline_v
 0,
-    1,                        // m_shader_mirror
     0.0f,0.0f,0.0f,1.0f,      // mirror
-    0,0,0,
+    0,0,0,0,
 0,
-    1,                        // m_shader_radial
     4.0f,0.9f,1,0.0f,         // radial
-    0,0,0,
+    0,0,0,0,
 /* crt */
 0,
     2,3,                      // ratio_2d
     2,1,                      // border
     0,0,0,0,
 0,
-    1,                        // m_shader_remanence
     0.2f,0.8f,                // buffer
     0.6f,0.4f,                // remanence
-    0,0,0,
+    0,0,0,0,
 0,
-    1,                        // m_shader_glow
     0.7f,0.3f,                // glow_mix
     3.0f,0.0f,                // glow_large
     1.5f,0.0f,                // glow_small
-    0,
+    0,0,
 0,
-    1,                        // m_shader_blur
     0.5f,0.0f,                // blur
-    0,0,0,0,0,
+    0,0,0,0,0,0,
 0,
-    1,                        // m_shader_postfx
     0.8f,0.48f,               // postfx_deform
     0.0f,0.8f,0.96f,          // postfx_corner
     0.5f,                     // postfx_vignetting
-    0,
+    0,0,
 0,
-    1,                        // m_shader_copper
     0.75f,0.25f,0.42f,4.0f,   // copper_copper
     4.0f,4.0f,4.0f,           // copper_mask_color
+    0,
 0,
     0.9f,0.95f,0.85f,         // color_filter
     1.0f,1.25f,0.1f,0.4f,     // color_color
     4.0f,                     // postfx_aberration
 0,
-    1,                        // m_shader_noise
     1.0f,1.0f,                // noise_offset
     0.15f,                    // noise_noise
     1.0f,1.0f,0.5f,           // noise_retrace
-    0,
+    0,0,
 0,
     1.0f,0.0f,0.0f,-0.25f,    // postfx_ghost1
     1.5f,0.0f,0.0f,0.25f,     // postfx_ghost2
@@ -539,59 +528,52 @@ float theme_var[]={
     8.0f,0.25f,0.75f,0.2f,    // postfx_glass
     0,0,0,0,
 0,
-    0.75f,-0.25f,0.0f,1.0f,   // postfx_moire_h
-    0.75f,-0.25f,1.0f,2.0f,   // postfx_moire_v
+    0.75f,0.0f,0.0f,0.0f,     // postfx_moire_h
+    0.75f,-0.25f,0.25f,0.5f,  // postfx_moire_v
 0,
     1.0f,0.0f,0.0f,0.0f,      // postfx_scanline_h
-    0.75f,-0.25f,2.0f,0.0f,   // postfx_scanline_v
+    0.75f,-0.25f,0.5f,0.0f,   // postfx_scanline_v
 0,
-    1,                        // m_shader_mirror
     0.95f,0.9f,0.5f,4.0f,     // mirror
-    0,0,0,
+    0,0,0,0,
 0,
-    1,                        // m_shader_radial
     4.0f,0.9f,16,0.25f,       // radial
-    0,0,0,
-/* green screen */
+    0,0,0,0,
+/* amber screen */
 0,
     2,4,                      // ratio_2d
     1,0,                      // border
     0,0,0,0,
 0,
-    1,                        // m_shader_remanence
     0.2f,0.8f,                // buffer
     0.6f,0.4f,                // remanence
-    0,0,0,
+    0,0,0,0,
 0,
-    1,                        // m_shader_glow
     0.4f,0.6f,                // glow_mix
     4.0f,0.0f,                // glow_large
     2.0f,0.0f,                // glow_small
-    0,
+    0,0,
 0,
-    1,                        // m_shader_blur
     0.5f,0.0f,                // blur
-    0,0,0,0,0,
+    0,0,0,0,0,0,
 0,
-    1,                        // m_shader_postfx
     0.7f,0.5f,                // postfx_deform
     0.0f,0.85f,0.98f,         // postfx_corner
     0.5f,                     // postfx_vignetting
-    0,
+    0,0,
 0,
-    1,                        // m_shader_copper
     0.75f,0.25f,0.42f,4.0f,   // copper_copper
     4.0f,4.0f,4.0f,           // copper_mask_color
+    0,
 0,
     1.0f,0.75f,0.0f,          // color_filter
     1.0f,1.25f,0.2f,1.0f,     // color_color
     1.5f,                     // postfx_aberration
 0,
-    1,                        // m_shader_noise
     1.0f,0.0f,                // noise_offset
     0.25f,                    // noise_noise
     1.0f,2.0f,2.0f,           // noise_retrace
-    0,
+    0,0,
 0,
     1.0f,0.0f,0.0f,-0.25f,    // postfx_ghost1
     1.5f,0.0f,0.0f,0.25f,     // postfx_ghost2
@@ -606,56 +588,49 @@ float theme_var[]={
     1.0f,0.0f,0.0f,0.0f,      // postfx_moire_h
     1.0f,0.0f,0.0f,0.0f,      // postfx_moire_v
 0,
-    0.6f,0.4f,3.5f,0.0f,      // postfx_scanline_h
-    0.9f,0.1f,2.5f,0.0f,      // postfx_scanline_v
+    0.6f,0.4f,1.0f,0.0f,      // postfx_scanline_h
+    0.9f,0.1f,0.75f,0.0f,     // postfx_scanline_v
 0,
-    1,                        // m_shader_mirror
     0.6f,0.6f,0.5f,4.0f,      // mirror
-    0,0,0,
+    0,0,0,0,
 0,
-    1,                        // m_shader_radial
     4.0f,0.84f,16,0.25f,      // radial
-    0,0,0,
+    0,0,0,0,
 /* lcd */
 0,
     2,2,                      // ratio_2d
     1,1,                      // border
     0,0,0,0,
 0,
-    1,                        // m_shader_remanence
-    0.2f,0.8f,                // buffer
-    0.2f,0.8f,                // remanence
-    0,0,0,
+    0.4f,0.6f,                // buffer
+    0.4f,0.6f,                // remanence
+    0,0,0,0,
 0,
-    1,                        // m_shader_glow
-    0.6f,0.4f,                // glow_mix
-    3.0f,0.0f,                // glow_large
-    1.5f,0.0f,                // glow_small
-    0,
+    0.5f,0.5f,                // glow_mix
+    2.4f,0.0f,                // glow_large
+    1.2f,0.0f,                // glow_small
+    0,0,
 0,
-    1,                        // m_shader_blur
     0.25f,0.0f,               // blur
-    0,0,0,0,0,
+    0,0,0,0,0,0,
 0,
-    1,                        // m_shader_postfx
     0.0f,0.5f,                // postfx_deform
     0.0f,1.0f,1.0f,           // postfx_corner
     0.0f,                     // postfx_vignetting
-    0,
+    0,0,
 0,
-    1,                        // m_shader_copper
     0.75f,0.25f,0.42f,4.0f,   // copper_copper
     4.0f,4.0f,4.0f,           // copper_mask_color
+    0,
 0,
     1.0f,1.0f,0.9f,           // color_filter
-    0.9f,1.1f,0.1f,0.0f,      // color_color
-    3.0f,                     // postfx_aberration
+    1.0f,1.15f,0.1f,0.25f,    // color_color
+    2.0f,                     // postfx_aberration
 0,
-    1,                        // m_shader_noise
     0.0f,0.0f,                // noise_offset
     0.15f,                    // noise_noise
     0.0f,0.0f,0.0f,           // noise_retrace
-    0,
+    0,0,
 0,
     0.0f,0.0f,0.0f,0.0f,      // postfx_ghost1
     0.0f,0.0f,0.0f,0.0f,      // postfx_ghost2
@@ -670,16 +645,14 @@ float theme_var[]={
     1.0f,0.0f,0.0f,0.0f,      // postfx_moire_h
     1.0f,0.0f,0.0f,0.0f,      // postfx_moire_v
 0,
-    0.85f,0.15f,2.0f,0.0f,    // postfx_scanline_h
-    0.85f,0.15f,2.0f,0.0f,    // postfx_scanline_v
+    0.80f,0.2f,0.75f,0.0f,    // postfx_scanline_h
+    0.80f,0.2f,0.75f,0.0f,    // postfx_scanline_v
 0,
-    1,                        // m_shader_mirror
     0.0f,0.0f,0.0f,1.0f,      // mirror
-    0,0,0,
+    0,0,0,0,
 0,
-    1,                        // m_shader_radial
     4.0f,0.9f,1,0.0f,         // radial
-    0,0,0,
+    0,0,0,0,
 /* granpa tv */
 /* intex system 4000 */
 0};
@@ -690,36 +663,30 @@ void Render::InitShaderVar()
     ratio_2d = vec2(theme_var[k], theme_var[k + 1]); k += 2;
     border = vec2(theme_var[k], theme_var[k + 1]); k += 2;
     k += 5; /* remanence */
-    m_shader_remanence = (theme_var[k] == 1) ? true : false; k++;
     buffer = vec2(theme_var[k], theme_var[k + 1]); k += 2;
     remanence = vec2(theme_var[k], theme_var[k + 1]); k += 2;
-    k += 4; /* glow */
-    m_shader_glow = (theme_var[k] == 1) ? true : false; k++;
+    k += 5; /* glow */
     glow_mix = vec2(theme_var[k], theme_var[k + 1]); k += 2;
     glow_large = vec2(theme_var[k], theme_var[k + 1]); k += 2;
     glow_small = vec2(theme_var[k], theme_var[k + 1]); k += 2;
-    k += 2; /* blur */
-    m_shader_blur = (theme_var[k] == 1) ? true : false; k++;
+    k += 3; /* blur */
     blur = vec2(theme_var[k], theme_var[k + 1]); k += 2;
-    k += 6; /* screen */
-    m_shader_postfx = (theme_var[k] == 1) ? true : false; k++;
+    k += 7; /* screen */
     postfx_deform = vec2(theme_var[k], theme_var[k + 1]); k += 2;
     postfx_corner = vec3(theme_var[k], theme_var[k + 1], theme_var[k + 2]); k += 3;
     postfx_vignetting = theme_var[k]; k++;
-    k += 2; /* copper */
-    m_shader_copper = (theme_var[k] == 1) ? true : false; k++;
+    k += 3; /* copper */
     copper_copper = vec4(theme_var[k], theme_var[k + 1], theme_var[k + 2], theme_var[k + 3]); k += 4;
     copper_mask_color = vec3(theme_var[k], theme_var[k + 1], theme_var[k + 2]); k += 3;
-    k += 1; /* color */
+    k += 2; /* color */
     color_filter = vec3(theme_var[k], theme_var[k + 1], theme_var[k + 2]); k += 3;
     color_color = vec4(theme_var[k], theme_var[k + 1], theme_var[k + 2], theme_var[k + 3]); k += 4;
     postfx_aberration = theme_var[k]; k++;
     k += 1; /* noise */
-    m_shader_noise = (theme_var[k] == 1) ? true : false; k++;
     noise_offset = vec2(theme_var[k], theme_var[k + 1]); k += 2;
     noise_noise = theme_var[k]; k++;
     noise_retrace = vec3(theme_var[k], theme_var[k + 1], theme_var[k + 2]); k += 3;
-    k += 2; /* ghost */
+    k += 3; /* ghost */
     postfx_ghost1 = vec4(theme_var[k], theme_var[k + 1], theme_var[k + 2], theme_var[k + 3]); k += 4;
     postfx_ghost2 = vec4(theme_var[k], theme_var[k + 1], theme_var[k + 2], theme_var[k + 3]); k += 4;
     k += 1; /* gradient */
@@ -734,10 +701,8 @@ void Render::InitShaderVar()
     postfx_scanline_h = vec4(theme_var[k], theme_var[k + 1], theme_var[k + 2], theme_var[k + 3]); k += 4;
     postfx_scanline_v = vec4(theme_var[k], theme_var[k + 1], theme_var[k + 2], theme_var[k + 3]); k += 4;
     k += 1; /* mirror */
-    m_shader_mirror = (theme_var[k] == 1) ? true : false; k++;
     mirror = vec4(theme_var[k], theme_var[k + 1], theme_var[k + 2], theme_var[k + 3]); k += 4;
-    k += 4; /* radial blur */
-    m_shader_radial = (theme_var[k] == 1) ? true : false; k++;
+    k += 5; /* radial blur */
     radial = vec4(theme_var[k], theme_var[k + 1], theme_var[k + 2], theme_var[k + 3]); k += 4;
 }
 
@@ -950,13 +915,13 @@ Render::Render(caca_canvas_t *caca)
     m_ready(false),
     m_pause(false),
     m_shader(true),
+    m_shader_remanence(true),
     m_shader_glow(true),
     m_shader_blur(true),
-    m_shader_remanence(true),
+    m_shader_postfx(true),
     m_shader_copper(true),
     m_shader_color(true),
     m_shader_noise(true),
-    m_shader_postfx(true),
     m_shader_mirror(true),
     m_shader_radial(true)
 {
@@ -1081,13 +1046,13 @@ void Render::TickDraw(float seconds)
     }
     if (Input::WasPressed(Key::F2))
     {
+        m_shader_remanence = !m_shader_remanence;
         m_shader_glow = !m_shader_glow;
         m_shader_blur = !m_shader_blur;
-        m_shader_remanence = !m_shader_remanence;
+        m_shader_postfx = !m_shader_postfx;
         //m_shader_copper = !m_shader_copper;
         m_shader_color = !m_shader_color;
         m_shader_noise = !m_shader_noise;
-        m_shader_postfx = !m_shader_postfx;
         m_shader_mirror = !m_shader_mirror;
         m_shader_radial = !m_shader_radial;
     }
@@ -1638,17 +1603,17 @@ void Render::Draw3D()
         shader_postfx->SetUniform(shader_postfx_ratio_2d, (vec2)ratio_2d / 2);
         shader_postfx->SetUniform(shader_postfx_time, fx_angle);
         shader_postfx->SetUniform(shader_postfx_deform, postfx_deform);
-        shader_postfx->SetUniform(shader_postfx_ghost1, vec4(postfx_ghost1.x * 0.01, postfx_ghost1.y * 0.01, postfx_ghost1.z * 0.01, postfx_ghost1.w));
-        shader_postfx->SetUniform(shader_postfx_ghost2, vec4(postfx_ghost2.x * 0.01, postfx_ghost2.y * 0.01, postfx_ghost2.z * 0.01, postfx_ghost2.w));
-        shader_postfx->SetUniform(shader_postfx_glass, vec4(postfx_glass.x * 0.01, postfx_glass.y * 0.01, postfx_glass.z * 0.1, postfx_glass.w));
+        shader_postfx->SetUniform(shader_postfx_ghost1, vec4(postfx_ghost1.xyz * 0.01, postfx_ghost1.w));
+        shader_postfx->SetUniform(shader_postfx_ghost2, vec4(postfx_ghost2.xyz * 0.01, postfx_ghost2.w));
+        shader_postfx->SetUniform(shader_postfx_glass, vec4(postfx_glass.xy * 0.01, postfx_glass.z * 0.1, postfx_glass.w));
         shader_postfx->SetUniform(shader_postfx_gradient, postfx_gradient);
         shader_postfx->SetUniform(shader_postfx_gradient_color, postfx_gradient_color);
         shader_postfx->SetUniform(shader_postfx_vignetting, postfx_vignetting);
         shader_postfx->SetUniform(shader_postfx_aberration, postfx_aberration);
-        shader_postfx->SetUniform(shader_postfx_moire_h, postfx_moire_h);
-        shader_postfx->SetUniform(shader_postfx_moire_v, postfx_moire_v);
-        shader_postfx->SetUniform(shader_postfx_scanline_h, postfx_scanline_h);
-        shader_postfx->SetUniform(shader_postfx_scanline_v, postfx_scanline_v);
+        shader_postfx->SetUniform(shader_postfx_moire_h, vec4(postfx_moire_h.xyz, postfx_moire_h.w * 2 * M_PI));
+        shader_postfx->SetUniform(shader_postfx_moire_v, vec4(postfx_moire_v.xyz, postfx_moire_v.w * 2 * M_PI));
+        shader_postfx->SetUniform(shader_postfx_scanline_h, vec4(postfx_scanline_h.xyz, postfx_scanline_h.w * 2 * M_PI));
+        shader_postfx->SetUniform(shader_postfx_scanline_v, vec4(postfx_scanline_v.xyz, postfx_scanline_v.w * 2 * M_PI));
         shader_postfx->SetUniform(shader_postfx_corner, postfx_corner);
         shader_postfx->SetUniform(shader_postfx_sync, (float)fabs(sync_value * cosf((main_angle - sync_angle) * 6.0f)));
         shader_postfx->SetUniform(shader_postfx_beat, (float)fabs(beat_value * cosf((main_angle - beat_angle) * 6.0f)));
diff --git a/neercs/video/render.h b/neercs/video/render.h
index db48828..acdaf4e 100644
--- a/neercs/video/render.h
+++ b/neercs/video/render.h
@@ -39,13 +39,13 @@ private:
     bool m_ready;
     bool m_pause;
     bool m_shader;
+    bool m_shader_remanence;
     bool m_shader_glow;
     bool m_shader_blur;
-    bool m_shader_remanence;
+    bool m_shader_postfx;
     bool m_shader_copper;
     bool m_shader_color;
     bool m_shader_noise;
-    bool m_shader_postfx;
     bool m_shader_mirror;
     bool m_shader_radial;
 };