diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg
index b0e7543aae5150092e3feba33be42b75ed1e41b5..448e98dc77f7669a34ae8426aac4b9089be879a7 100644
--- a/extras/conf/udb/Includes/SRB222_linedefs.cfg
+++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg
@@ -2146,6 +2146,11 @@ udmf
 				type = 13;
 			}
 			arg1
+			{
+				title = "Alpha";
+				default = 128;
+			}
+			arg2
 			{
 				title = "Damage bosses?";
 				type = 11;
diff --git a/src/p_setup.c b/src/p_setup.c
index a75cf7cb3bcbcce1bafaba0e186db92142474942..c72887c7a80d427af3f460fd27e675b9a6a39804 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -3373,8 +3373,12 @@ static void P_ConvertBinaryMap(void)
 			break;
 		case 258: //FOF: Laser
 			lines[i].args[0] = lines[i].tag;
+			if (sides[lines[i].sidenum[0]].toptexture > 0)
+				lines[i].args[1] = sides[lines[i].sidenum[0]].toptexture;
+			else
+				lines[i].args[1] = 128;
 			if (lines[i].flags & ML_EFFECT1)
-				lines[i].args[1] = 1;
+				lines[i].args[2] = 1;
 			break;
 		case 259: //Custom FOF
 			if (lines[i].sidenum[1] == 0xffff)
diff --git a/src/p_spec.c b/src/p_spec.c
index ce01cb669fd6406565da5265a9af079fdaa9965a..214e7e1c088f8d4c51f6d7b96fbc0287d68877d9 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -6927,8 +6927,8 @@ void P_SpawnSpecials(boolean fromnetsave)
 				break;
 
 			case 258: // Laser block
-				P_AddLaserThinker(lines[i].args[0], lines + i, !!(lines[i].args[1]));
-				P_AddFakeFloorsByLine(i, (lines[i].alpha * 0xff) >> FRACBITS, FF_EXISTS|FF_RENDERALL|FF_NOSHADE|FF_EXTRA|FF_CUTEXTRA|FF_TRANSLUCENT, secthinkers);
+				P_AddLaserThinker(lines[i].args[0], lines + i, !!(lines[i].args[2]));
+				P_AddFakeFloorsByLine(i, lines[i].args[1], FF_EXISTS|FF_RENDERALL|FF_NOSHADE|FF_EXTRA|FF_CUTEXTRA|FF_TRANSLUCENT, secthinkers);
 				break;
 
 			case 259: // Custom FOF