diff --git a/stepmania/BackgroundEffects/Centered.lua b/stepmania/BackgroundEffects/Centered.lua
new file mode 100644
index 0000000000..ac25a6454d
--- /dev/null
+++ b/stepmania/BackgroundEffects/Centered.lua
@@ -0,0 +1,10 @@
+local Color = color(Var "Color1");
+local children = {
+ LoadActor(Var "File1") .. {
+ OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;diffuse,Color);
+ GainFocusCommand=cmd(play);
+ LoseFocusCommand=cmd(pause);
+ };
+};
+
+return Def.ActorFrame { children = children };
diff --git a/stepmania/BackgroundEffects/Centered.xml b/stepmania/BackgroundEffects/Centered.xml
deleted file mode 100644
index e09bea83a7..0000000000
--- a/stepmania/BackgroundEffects/Centered.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
diff --git a/stepmania/BackgroundEffects/Checkerboard1File2x2.lua b/stepmania/BackgroundEffects/Checkerboard1File2x2.lua
new file mode 100644
index 0000000000..b52f29813d
--- /dev/null
+++ b/stepmania/BackgroundEffects/Checkerboard1File2x2.lua
@@ -0,0 +1,16 @@
+local Color = color(Var "Color1");
+
+local a = LoadActor(Var "File1") .. {
+ OnCommand=cmd(zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;diffuse,Color);
+ GainFocusCommand=cmd(play);
+ LoseFocusCommand=cmd(pause);
+};
+
+local children = {
+ a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+ a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+ a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+ a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+};
+
+return Def.ActorFrame { children = children };
diff --git a/stepmania/BackgroundEffects/Checkerboard1File2x2.xml b/stepmania/BackgroundEffects/Checkerboard1File2x2.xml
deleted file mode 100644
index 06a21844d3..0000000000
--- a/stepmania/BackgroundEffects/Checkerboard1File2x2.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/stepmania/BackgroundEffects/Checkerboard2File2x2.lua b/stepmania/BackgroundEffects/Checkerboard2File2x2.lua
new file mode 100644
index 0000000000..b8586af7ec
--- /dev/null
+++ b/stepmania/BackgroundEffects/Checkerboard2File2x2.lua
@@ -0,0 +1,16 @@
+local Color = color(Var "Color1");
+local a = LoadActor(Var "File2") .. {
+ OnCommand=cmd(zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;diffuse,Color);
+ GainFocusCommand=cmd(play);
+ LoseFocusCommand=cmd(pause);
+};
+
+local children = {
+ a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+ a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+ a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+ a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+};
+
+return Def.ActorFrame { children = children };
+
diff --git a/stepmania/BackgroundEffects/Checkerboard2File2x2.xml b/stepmania/BackgroundEffects/Checkerboard2File2x2.xml
deleted file mode 100644
index 9c7a813ebe..0000000000
--- a/stepmania/BackgroundEffects/Checkerboard2File2x2.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/stepmania/BackgroundEffects/Kaleidoscope2x2.lua b/stepmania/BackgroundEffects/Kaleidoscope2x2.lua
new file mode 100644
index 0000000000..234a806dd0
--- /dev/null
+++ b/stepmania/BackgroundEffects/Kaleidoscope2x2.lua
@@ -0,0 +1,16 @@
+local Color = color(Var "Color1");
+
+local a = LoadActor(Var "File1") .. {
+ OnCommand=cmd(zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;diffuse,Color;zoomx,self:GetZoomX()*-1;zoomy,self:GetZoomY()*-1);
+ GainFocusCommand=cmd(play);
+ LoseFocusCommand=cmd(pause);
+};
+
+local children = {
+ a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+ a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+ a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+ a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
+};
+
+return Def.ActorFrame { children = children };
diff --git a/stepmania/BackgroundEffects/Kaleidoscope2x2.xml b/stepmania/BackgroundEffects/Kaleidoscope2x2.xml
deleted file mode 100644
index 816b892e3a..0000000000
--- a/stepmania/BackgroundEffects/Kaleidoscope2x2.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/stepmania/BackgroundEffects/SongBgWithMovieViz.lua b/stepmania/BackgroundEffects/SongBgWithMovieViz.lua
new file mode 100644
index 0000000000..8d729204ee
--- /dev/null
+++ b/stepmania/BackgroundEffects/SongBgWithMovieViz.lua
@@ -0,0 +1,16 @@
+local Color1 = color(Var "Color1");
+local Color2 = color(Var "Color2");
+
+local children = {
+ Def.Sprite {
+ OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;ZoomToWidth,SCREEN_WIDTH;ZoomToHeight,SCREEN_HEIGHT;diffuse,Color1);
+ };
+
+ LoadActor(Var "File1") .. {
+ OnCommand=cmd(blend,"BlendMode_Add";x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;ZoomToWidth,SCREEN_WIDTH;ZoomToHeight,SCREEN_HEIGHT;diffuse,Color2);
+ GainFocusCommand=cmd(play);
+ LoseFocusCommand=cmd(pause);
+ };
+};
+
+return Def.ActorFrame { children = children };
diff --git a/stepmania/BackgroundEffects/SongBgWithMovieViz.xml b/stepmania/BackgroundEffects/SongBgWithMovieViz.xml
deleted file mode 100644
index 2fc487a5b8..0000000000
--- a/stepmania/BackgroundEffects/SongBgWithMovieViz.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
diff --git a/stepmania/BackgroundEffects/StretchNoLoop.lua b/stepmania/BackgroundEffects/StretchNoLoop.lua
new file mode 100644
index 0000000000..fbd75cd539
--- /dev/null
+++ b/stepmania/BackgroundEffects/StretchNoLoop.lua
@@ -0,0 +1,10 @@
+local Color = color(Var "Color1");
+local children = {
+ LoadActor(Var "File1") .. {
+ OnCommand=cmd(scale_or_crop_background;diffuse,Color;loop,false);
+ GainFocusCommand=cmd(play);
+ LoseFocusCommand=cmd(pause);
+ };
+};
+
+return Def.ActorFrame { children = children };
diff --git a/stepmania/BackgroundEffects/StretchNoLoop.xml b/stepmania/BackgroundEffects/StretchNoLoop.xml
deleted file mode 100644
index 1691fd4ec8..0000000000
--- a/stepmania/BackgroundEffects/StretchNoLoop.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
diff --git a/stepmania/BackgroundEffects/StretchNormal.lua b/stepmania/BackgroundEffects/StretchNormal.lua
new file mode 100644
index 0000000000..3b100c79db
--- /dev/null
+++ b/stepmania/BackgroundEffects/StretchNormal.lua
@@ -0,0 +1,11 @@
+local Color = color(Var "Color1");
+
+local children = {
+ LoadActor(Var "File1") .. {
+ OnCommand=cmd(scale_or_crop_background;diffuse,Color);
+ GainFocusCommand=cmd(play);
+ LoseFocusCommand=cmd(pause);
+ };
+};
+
+return Def.ActorFrame { children = children };
diff --git a/stepmania/BackgroundEffects/StretchNormal.xml b/stepmania/BackgroundEffects/StretchNormal.xml
deleted file mode 100644
index cba83ccb92..0000000000
--- a/stepmania/BackgroundEffects/StretchNormal.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/stepmania/BackgroundEffects/StretchNormalAlignLeft.lua b/stepmania/BackgroundEffects/StretchNormalAlignLeft.lua
new file mode 100644
index 0000000000..3a5402259d
--- /dev/null
+++ b/stepmania/BackgroundEffects/StretchNormalAlignLeft.lua
@@ -0,0 +1,12 @@
+-- Align left when cropping to 4:3.
+local Color = color(Var "Color1");
+
+local children = {
+ LoadActor(Var "File1") .. {
+ OnCommand=cmd(horizalign,left;scaletocover,0,0,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,color(Color));
+ GainFocusCommand=cmd(play);
+ LoseFocusCommand=cmd(pause);
+ };
+};
+
+return Def.ActorFrame { children = children };
diff --git a/stepmania/BackgroundEffects/StretchNormalAlignLeft.xml b/stepmania/BackgroundEffects/StretchNormalAlignLeft.xml
deleted file mode 100644
index d2b4b6af1c..0000000000
--- a/stepmania/BackgroundEffects/StretchNormalAlignLeft.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
diff --git a/stepmania/BackgroundEffects/StretchPaused.lua b/stepmania/BackgroundEffects/StretchPaused.lua
new file mode 100644
index 0000000000..4dd91a5b37
--- /dev/null
+++ b/stepmania/BackgroundEffects/StretchPaused.lua
@@ -0,0 +1,11 @@
+local Color = color(Var "Color1");
+
+local children = {
+ LoadActor(Var "File1") .. {
+ OnCommand=cmd(scale_or_crop_background;diffuse,Color;pause);
+ GainFocusCommand=cmd(play);
+ LoseFocusCommand=cmd(pause);
+ };
+};
+
+return Def.ActorFrame { children = children };
diff --git a/stepmania/BackgroundEffects/StretchPaused.xml b/stepmania/BackgroundEffects/StretchPaused.xml
deleted file mode 100644
index 96cb095ae0..0000000000
--- a/stepmania/BackgroundEffects/StretchPaused.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
diff --git a/stepmania/BackgroundEffects/StretchRewind.lua b/stepmania/BackgroundEffects/StretchRewind.lua
new file mode 100644
index 0000000000..0df3c6c1dd
--- /dev/null
+++ b/stepmania/BackgroundEffects/StretchRewind.lua
@@ -0,0 +1,12 @@
+local Color = color(Var "Color1");
+
+local children = {
+ LoadActor(Var "File1") .. {
+ OnCommand=cmd(scale_or_crop_background;diffuse,Color;position,0);
+ GainFocusCommand=cmd(play);
+ LoseFocusCommand=cmd(pause);
+ };
+};
+
+return Def.ActorFrame { children = children };
+
diff --git a/stepmania/BackgroundEffects/StretchRewind.xml b/stepmania/BackgroundEffects/StretchRewind.xml
deleted file mode 100644
index 4efbc39dcd..0000000000
--- a/stepmania/BackgroundEffects/StretchRewind.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
diff --git a/stepmania/BackgroundEffects/UpperLeft.lua b/stepmania/BackgroundEffects/UpperLeft.lua
new file mode 100644
index 0000000000..32f9fb9a42
--- /dev/null
+++ b/stepmania/BackgroundEffects/UpperLeft.lua
@@ -0,0 +1,13 @@
+-- upper left corner
+local Color = color(Var "Color1");
+
+local children = {
+ LoadActor(Var "File1") .. {
+ OnCommand=cmd(diffuse,Color);
+ GainFocusCommand=cmd(play);
+ LoseFocusCommand=cmd(pause);
+ };
+};
+
+return Def.ActorFrame { children = children };
+
diff --git a/stepmania/BackgroundEffects/UpperLeft.xml b/stepmania/BackgroundEffects/UpperLeft.xml
deleted file mode 100644
index eff65f7fbd..0000000000
--- a/stepmania/BackgroundEffects/UpperLeft.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-