Index: code/nebula/neblightning.cpp
===================================================================
--- code/nebula/neblightning.cpp	(revision 10831)
+++ code/nebula/neblightning.cpp	(working copy)
@@ -931,6 +931,7 @@
 	size_t idx;	
 	vec3d temp, pt;
 	vec3d glow_a, glow_b;
+	ubyte flags;
 
 	// direction matrix
 	vm_vec_sub(&dir, &a->pos, &b->pos);
@@ -955,15 +956,17 @@
 		vm_vec_add2(&pt, &a->pos);
 			
 		// transform
-		if (Cmdline_nohtl) {
-			g3_rotate_vertex(&c->vex[idx], &pt);
-		} else {
+		g3_rotate_vertex(&c->vex[idx], &pt);
+		g3_project_vertex(&c->vex[idx]);		
+		if (!Cmdline_nohtl) {	// This is a dirty, dirty hack -MageKing17
+			flags = c->vex[idx].flags;
 			g3_transfer_vertex(&c->vex[idx], &pt);
+			c->vex[idx].flags = flags;
 		}
-		g3_project_vertex(&c->vex[idx]);		
 
 		// if first frame, keep track of the average screen pos
-		if((c->vex[idx].screen.xyw.x >= 0)
+		if( !(c->vex[idx].flags & PF_OVERFLOW)
+			&& (c->vex[idx].screen.xyw.x >= 0)
 			&& (c->vex[idx].screen.xyw.x < gr_screen.max_w)
 			&& (c->vex[idx].screen.xyw.y >= 0)
 			&& (c->vex[idx].screen.xyw.y < gr_screen.max_h))
@@ -975,18 +978,18 @@
 	}
 	// calculate the glow points		
 	nebl_calc_facing_pts_smart(&glow_a, &glow_b, &dir_normal, &a->pos, pinch_a ? 0.5f : width * 6.0f, Nebl_type->b_add);
-	if (Cmdline_nohtl) {
-		g3_rotate_vertex(&c->glow_vex[0], &glow_a);
-	} else {
+	g3_rotate_vertex(&c->glow_vex[0], &glow_a);
+	g3_project_vertex(&c->glow_vex[0]);
+	g3_rotate_vertex(&c->glow_vex[1], &glow_b);
+	g3_project_vertex(&c->glow_vex[1]);	
+	if (!Cmdline_nohtl) {	// This is a dirty, dirty hack -MageKing17
+		flags = c->glow_vex[0].flags;
 		g3_transfer_vertex(&c->glow_vex[0], &glow_a);
-	}
-	g3_project_vertex(&c->glow_vex[0]);
-	if (Cmdline_nohtl) {
-		g3_rotate_vertex(&c->glow_vex[1], &glow_b);
-	} else {
+		c->glow_vex[0].flags = flags;
+		flags = c->glow_vex[1].flags;
 		g3_transfer_vertex(&c->glow_vex[1], &glow_b);
+		c->glow_vex[1].flags = flags;
 	}
-	g3_project_vertex(&c->glow_vex[1]);	
 
 	// maybe do a cap
 	if(cap != NULL){		
@@ -1002,15 +1005,17 @@
 			vm_vec_add2(&pt, &b->pos);
 			
 			// transform
-			if (Cmdline_nohtl) {
-				g3_rotate_vertex(&cap->vex[idx], &pt);
-			} else {
+			g3_rotate_vertex(&cap->vex[idx], &pt);
+			g3_project_vertex(&cap->vex[idx]);			
+			if (!Cmdline_nohtl) {	// This is a dirty, dirty hack -MageKing17
+				flags = cap->vex[idx].flags;
 				g3_transfer_vertex(&cap->vex[idx], &pt);
+				cap->vex[idx].flags = flags;
 			}
-			g3_project_vertex(&cap->vex[idx]);			
 
 			// if first frame, keep track of the average screen pos			
-			if( (cap->vex[idx].screen.xyw.x >= 0)
+			if( !(cap->vex[idx].flags & PF_OVERFLOW)
+				&& (cap->vex[idx].screen.xyw.x >= 0)
 				&& (cap->vex[idx].screen.xyw.x < gr_screen.max_w)
 				&& (cap->vex[idx].screen.xyw.y >= 0)
 				&& (cap->vex[idx].screen.xyw.y < gr_screen.max_h))
@@ -1023,18 +1028,18 @@
 		
 		// calculate the glow points		
 		nebl_calc_facing_pts_smart(&glow_a, &glow_b, &dir_normal, &b->pos, pinch_b ? 0.5f : width * 6.0f, bi->b_add);
-		if (Cmdline_nohtl) {
-			g3_rotate_vertex(&cap->glow_vex[0], &glow_a);
-		} else {
+		g3_rotate_vertex(&cap->glow_vex[0], &glow_a);
+		g3_project_vertex(&cap->glow_vex[0]);
+		g3_rotate_vertex(&cap->glow_vex[1], &glow_b);
+		g3_project_vertex(&cap->glow_vex[1]);
+		if (!Cmdline_nohtl) {	// This is a dirty, dirty hack -MageKing17
+			flags = cap->glow_vex[0].flags;
 			g3_transfer_vertex(&cap->glow_vex[0], &glow_a);
-		}
-		g3_project_vertex(&cap->glow_vex[0]);
-		if (Cmdline_nohtl) {
-			g3_rotate_vertex(&cap->glow_vex[1], &glow_b);
-		} else {
+			cap->glow_vex[0].flags = flags;
+			flags = cap->glow_vex[1].flags;
 			g3_transfer_vertex(&cap->glow_vex[1], &glow_b);
+			cap->glow_vex[1].flags = flags;
 		}
-		g3_project_vertex(&cap->glow_vex[1]);
 	}
 }
 
