diff --git a/src/lephisto.c b/src/lephisto.c
index b4ca7c7..8daff3c 100644
--- a/src/lephisto.c
+++ b/src/lephisto.c
@@ -455,23 +455,26 @@ static void update_routine(double dt) {
  *    -- Text and GUI.
  */
 static void render_all(void) {
+  double dt;
+
+  dt = (paused) ? 0. : cur_dt;
   /* Setup. */
-  spfx_start(cur_dt);
+  spfx_start(dt);
   /* BG. */
-  space_render(cur_dt);
+  space_render(dt);
   planets_render();
   player_renderBG();
-  weapons_render(WEAPON_LAYER_BG);
+  weapons_render(WEAPON_LAYER_BG, dt);
   /* N. */
   pilots_render();
-  weapons_render(WEAPON_LAYER_FG);
+  weapons_render(WEAPON_LAYER_FG, dt);
   spfx_render(SPFX_LAYER_BACK);
   /* FG. */
   player_render();
   spfx_render(SPFX_LAYER_FRONT);
-  space_renderOverlay(cur_dt);
+  space_renderOverlay(dt);
   player_renderGUI();
-  display_fps(cur_dt);
+  display_fps(dt); /* Exception. */
 }
 
 
diff --git a/src/weapon.c b/src/weapon.c
index e9deb97..7ab629c 100644
--- a/src/weapon.c
+++ b/src/weapon.c
@@ -65,6 +65,7 @@ typedef struct Weapon_ {
   int voice;            /**< Weapons voice. */
   double lockon;        /**< Some weapons have a lockon delay. */
   double timer;         /**< Mainly used to see when the weapon was fired. */
+  double anim;          /**< Used for beam weapon graphics. */
 
   /* Update position and render. */
   void(*update)(struct Weapon_*, const double, WeaponLayer); /**< Update the weapon. */
@@ -91,7 +92,7 @@ static Weapon* weapon_create(const Outfit* outfit, const double dir,
                              const unsigned int parent,
                              const unsigned int target);
 
-static void weapon_render(const Weapon* w);
+static void weapon_render(Weapon* w, const double dt);
 static void weapons_updateLayer(const double dt, const WeaponLayer layer);
 static void weapon_update(Weapon* w, const double dt, WeaponLayer layer);
 static void weapon_hit(Weapon* w, Pilot* p, WeaponLayer layer, Vec2* pos);
@@ -386,8 +387,9 @@ static void weapons_updateLayer(const double dt, const WeaponLayer layer) {
  *
  * @brief Render all the weapons in a layer.
  *    @param layer Layer to render.
+ *    @param Current delta tick.
  */
-void weapons_render(const WeaponLayer layer) {
+void weapons_render(const WeaponLayer layer, const double dt) {
   Weapon** wlayer;
   int* nlayer;
   int i;
@@ -403,16 +405,16 @@ void weapons_render(const WeaponLayer layer) {
     break;
   }
   for(i = 0; i < (*nlayer); i++)
-    weapon_render(wlayer[i]);
+    weapon_render(wlayer[i], dt);
 }
 
 /**
- * @fn static void weapon_render(const Weapon* w)
+ * @fn static void weapon_render(Weapon* w, const double dt)
  *
  * @brief Render an individual weapon.
  *    @param w Weapon to render.
  */
-static void weapon_render(const Weapon* w) {
+static void weapon_render(Weapon* w, const double dt) {
   int sx, sy;
   double x, y;
   glTexture* gfx;
@@ -457,34 +459,42 @@ static void weapon_render(const Weapon* w) {
         /* Start fading. */
         ACOLOUR(cWhite, 0.);
 
-        glTexCoord2d(0., 0.);
+        glTexCoord2d(w->anim, 0.);
         glVertex2d(-gfx->sh/2., 0.);
 
-        glTexCoord2d(0., 1.);
+        glTexCoord2d(w->anim, 1.);
         glVertex2d(+gfx->sh/2., 0.);
 
         /* Full Strength. */
         COLOUR(cWhite);
 
-        glTexCoord2d(10. / gfx->sw, 0.);
+        glTexCoord2d(w->anim+10. / gfx->sw, 0.);
         glVertex2d(-gfx->sh/2., 10.);
 
-        glTexCoord2d(10. / gfx->sw, 1.);
+        glTexCoord2d(w->anim+10. / gfx->sw, 1.);
         glVertex2d(+gfx->sh/2., 10.);
 
-        glTexCoord2d(0.8*w->outfit->u.bem.range / gfx->sw, 0.);
+        glTexCoord2d(w->anim+0.8*w->outfit->u.bem.range / gfx->sw, 0.);
+        glVertex2d(+gfx->sh/2., 0.8*w->outfit->u.bem.range);
+
+        glTexCoord2d(w->anim+0.8*w->outfit->u.bem.range / gfx->sw, 1.);
         glVertex2d(+gfx->sh/2., 0.8*w->outfit->u.bem.range);
 
         /* Fades out. */
         ACOLOUR(cWhite, 0.);
 
-        glTexCoord2d(w->outfit->u.bem.range / gfx->sw, 0.);
+        glTexCoord2d(w->anim+w->outfit->u.bem.range / gfx->sw, 0.);
         glVertex2d(-gfx->sh/2., w->outfit->u.bem.range);
 
-        glTexCoord2d(w->outfit->u.bem.range / gfx->sw, 1.);
+        glTexCoord2d(w->anim+w->outfit->u.bem.range / gfx->sw, 1.);
         glVertex2d(+gfx->sh/2., w->outfit->u.bem.range);
       glEnd();
 
+      /* Do the beam movement. */
+      w->anim -= 5. * dt;
+      if(w->anim <= -gfx->sw)
+        w->anim += gfx->sw;
+
       /* Clean up. */
       glDisable(GL_TEXTURE_2D);
       glShadeModel(GL_FLAT);
diff --git a/src/weapon.h b/src/weapon.h
index 1ee8471..f9dcaec 100644
--- a/src/weapon.h
+++ b/src/weapon.h
@@ -28,7 +28,7 @@ void weapon_explode(double x, double y, double radius,
 
 /* Update. */
 void weapons_update(const double dt);
-void weapons_render(const WeaponLayer layer);
+void weapons_render(const WeaponLayer layer, const double dt);
 
 /* Clean. */
 void weapon_clear(void);