Index: plugins/tools/billboard/billboard.cpp
===================================================================
--- plugins/tools/billboard/billboard.cpp	(revision 3597)
+++ plugins/tools/billboard/billboard.cpp	(working copy)
@@ -710,10 +710,12 @@
 
   int fw = g3d->GetWidth ();
   int fh = g3d->GetHeight ();
+  //printf("celBillboard::Draw w:%d h:%d\n",fw,fh);
   csRect r;
   GetRect (r);
   if (r.xmax <= 0 || r.xmin >= fw-1) return;
   if (r.ymax <= 0 || r.ymin >= fh-1) return;
+  //printf("celBillboard::Draw xmin:%d xmax:%d ymin:%d ymax:%d\n",fw,fh,r.xmin,r.xmax,r.ymin,r.ymax);
 
   SetupMaterial ();
   if (!material) return;
@@ -824,7 +826,7 @@
   mesh_texels.Push (uvbr);
   mesh_texels.Push (csVector2 (uvtl.x, uvbr.y));
 
-  csVector4 c (color.red, color.green, color.blue, 1.0);
+  csVector4 c (color.red, color.green, color.blue, 0.5);
   mesh_colors.Push (c);
   mesh_colors.Push (c);
   mesh_colors.Push (c);
@@ -885,6 +887,12 @@
   vc = csQueryRegistry<iVirtualClock> (object_reg);
   name_reg = csEventNameRegistry::GetRegistry (object_reg);
   CanvasResize = csevCanvasResize (name_reg, g3d->GetDriver2D ());
+  PreProcess = csevPreProcess(object_reg);
+  PostProcess = csevPostProcess(object_reg);
+  MouseUp = csevMouseUp(name_reg,0);
+  MouseDown = csevMouseDown(name_reg,0);
+  MouseMove = csevMouseMove(name_reg,0);
+  MouseDoubleClick = csevMouseDoubleClick(name_reg,0);
 
   scfiEventHandler = new EventHandler (this);
   csRef<iEventQueue> q = csQueryRegistry<iEventQueue> (object_reg);
@@ -1055,11 +1063,11 @@
     screen_w_fact = BSX / g3d->GetWidth ();
     screen_h_fact = BSY / g3d->GetHeight ();
   }
-  else if (ev.Name == csevPreProcess (object_reg))
+  else if (ev.Name == PreProcess)
   {
     HandleMovingBillboards (vc->GetElapsedTicks ());
   }
-  else if (ev.Name == csevPostProcess (object_reg))
+  else if (ev.Name == PostProcess)
   {
     if (billboards.GetSize () > 0)
     {
@@ -1086,7 +1094,7 @@
 	    if (font)
 	    {
 	      mesh_draw (g3d);
-	      g3d->BeginDraw (CSDRAW_2DGRAPHICS);
+	      //g3d->BeginDraw (CSDRAW_2DGRAPHICS);
 	      csRect r;
 	      bb->GetRect (r);
               int text_dx = bb->GetTextDX ();
@@ -1099,7 +1107,7 @@
 	      g3d->GetDriver2D ()->Write (font,
 			r.xmin+text_dx, r.ymin+text_dy,
 			fg, bg, t);
-	      g3d->BeginDraw (CSDRAW_3DGRAPHICS);
+	      //g3d->BeginDraw (CSDRAW_3DGRAPHICS);
 	    }
 	  }
 	}
@@ -1108,7 +1116,7 @@
       mesh_draw (g3d);
     }
   }
-  else if (ev.Name == csevMouseUp (name_reg, 0))
+  else if (ev.Name == MouseUp)
   {
     if (moving_billboard)
     {
@@ -1126,7 +1134,7 @@
 	  	csMouseEventHelper::GetX(&ev), csMouseEventHelper::GetY(&ev), 
 		csMouseEventHelper::GetButton(&ev));
   }
-  else if (ev.Name == csevMouseDown (name_reg, 0))
+  else if (ev.Name == MouseDown)
   {
     celBillboard* bb = FindBillboard (csMouseEventHelper::GetX(&ev), 
 					  csMouseEventHelper::GetY(&ev),
@@ -1151,7 +1159,7 @@
 			       csMouseEventHelper::GetButton(&ev));
     }
   }
-  else if (ev.Name == csevMouseMove (name_reg, 0))
+  else if (ev.Name == MouseMove)
   {
     if (moving_billboard)
     {
@@ -1180,7 +1188,7 @@
 			     csMouseEventHelper::GetButton(&ev));
     }
   }
-  else if (ev.Name == csevMouseDoubleClick (name_reg, 0))
+  else if (ev.Name == MouseDoubleClick)
   {
     celBillboard* bb = FindBillboard (csMouseEventHelper::GetX(&ev),
 					  csMouseEventHelper::GetY(&ev),
Index: plugins/tools/billboard/billboard.h
===================================================================
--- plugins/tools/billboard/billboard.h	(revision 3597)
+++ plugins/tools/billboard/billboard.h	(working copy)
@@ -304,6 +304,12 @@
   int default_bg_color;
 
   csEventID CanvasResize;
+  csEventID PreProcess;
+  csEventID PostProcess;
+  csEventID MouseUp;
+  csEventID MouseDown;
+  csEventID MouseMove;
+  csEventID MouseDoubleClick;
 
 public:
   csRef<iEngine> engine;
