diff --git a/src/pulsaranimationwidget.cpp b/src/pulsaranimationwidget.cpp
index afdffe3bd6e81a70f3e999462b54145645896652..b12731d2838fed8068909e933807b606d8c64760 100644
--- a/src/pulsaranimationwidget.cpp
+++ b/src/pulsaranimationwidget.cpp
@@ -61,6 +61,9 @@ PulsarAnimationWidget::PulsarAnimationWidget(QWidget *parent) :
     m_quadricPulsarMagneticAxis = NULL;
     m_quadricPulsarConeRim1 = NULL;
     m_quadricPulsarConeRim2 = NULL;
+    m_quadricLineOfSight = NULL;
+    m_quadricLineOfSightTop1 = NULL;
+    m_quadricLineOfSightTop2 = NULL;
 
     // initialize texture pointers
     m_pulsarTexture = 0;
@@ -106,7 +109,13 @@ PulsarAnimationWidget::~PulsarAnimationWidget()
     if(m_quadricPulsarSpinAxis) gluDeleteQuadric(m_quadricPulsarSpinAxis);
     if(m_quadricPulsarSpinAxisTop1) gluDeleteQuadric(m_quadricPulsarSpinAxisTop1);
     if(m_quadricPulsarSpinAxisTop2) gluDeleteQuadric(m_quadricPulsarSpinAxisTop2);
+    if(m_quadricPulsarSpinAxis) gluDeleteQuadric(m_quadricPulsarSpinAxis);
+    if(m_quadricPulsarSpinAxisTop1) gluDeleteQuadric(m_quadricPulsarSpinAxisTop1);
+    if(m_quadricPulsarSpinAxisTop2) gluDeleteQuadric(m_quadricPulsarSpinAxisTop2);
     if(m_quadricPulsarMagneticAxis) gluDeleteQuadric(m_quadricPulsarMagneticAxis);
+    if(m_quadricPulsarSpinAxis) gluDeleteQuadric(m_quadricLineOfSight);
+    if(m_quadricPulsarSpinAxisTop1) gluDeleteQuadric(m_quadricLineOfSightTop1);
+    if(m_quadricPulsarSpinAxisTop2) gluDeleteQuadric(m_quadricLineOfSightTop2);
     if(m_pulsarTexture) deleteTexture(m_pulsarTexture);
     if(m_backgroundTexture) deleteTexture(m_backgroundTexture);
 }
@@ -149,6 +158,9 @@ void PulsarAnimationWidget::initializeGL()
     m_quadricPulsarSpinAxisTop1 = gluNewQuadric();
     m_quadricPulsarSpinAxisTop2 = gluNewQuadric();
     m_quadricPulsarMagneticAxis = gluNewQuadric();
+    m_quadricLineOfSight = gluNewQuadric();
+    m_quadricLineOfSightTop1 = gluNewQuadric();
+    m_quadricLineOfSightTop2 = gluNewQuadric();
 
     gluQuadricNormals(m_quadricPulsar, GLU_SMOOTH);
     gluQuadricNormals(m_quadricPulsarConeRim1, GLU_SMOOTH);
@@ -157,6 +169,9 @@ void PulsarAnimationWidget::initializeGL()
     gluQuadricNormals(m_quadricPulsarSpinAxisTop1, GLU_SMOOTH);
     gluQuadricNormals(m_quadricPulsarSpinAxisTop2, GLU_SMOOTH);
     gluQuadricNormals(m_quadricPulsarMagneticAxis, GLU_SMOOTH);
+    gluQuadricNormals(m_quadricLineOfSight, GLU_SMOOTH);
+    gluQuadricNormals(m_quadricLineOfSightTop1, GLU_SMOOTH);
+    gluQuadricNormals(m_quadricLineOfSightTop2, GLU_SMOOTH);
 
 
     // query max texture size (estimate)
@@ -262,6 +277,31 @@ void PulsarAnimationWidget::paintGL()
     // draw scence
     glPushMatrix();
     {
+        //draw line of sight (observer)
+        if(m_showRotationAxes) {
+            glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
+            glColor3f(0.33f, 0.33f, 1.0f);
+            glPushMatrix();
+            {
+                glTranslatef(0.0, 0.0, -5.0);
+                gluCylinder(m_quadricLineOfSight, 0.025, 0.025, 10.0, 32, 1);
+            }
+            glPopMatrix();
+            glPushMatrix();
+            {
+                glTranslatef(0.0, 0.0, -5.0);
+                gluDisk(m_quadricLineOfSightTop1, 0, 0.025, 32, 8);
+            }
+            glPopMatrix();
+            glPushMatrix();
+            {
+                glTranslatef(0.0, 0.0, 5.0);
+                gluDisk(m_quadricLineOfSightTop2, 0, 0.025, 32, 8);
+            }
+            glPopMatrix();
+            glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
+        }
+
         // draw pulsar
         glPushMatrix();
         {
@@ -275,19 +315,19 @@ void PulsarAnimationWidget::paintGL()
                 glPushMatrix();
                 {
                     glTranslatef(0.0, 0.0, -5.0);
-                    gluCylinder(m_quadricPulsarSpinAxis, 0.025, 0.025, 10.0, 32, 1);
+                    gluCylinder(m_quadricPulsarSpinAxis, 0.020, 0.020, 10.0, 32, 1);
                 }
                 glPopMatrix();
                 glPushMatrix();
                 {
                     glTranslatef(0.0, 0.0, -5.0);
-                    gluDisk(m_quadricPulsarSpinAxisTop1, 0, 0.025, 32, 8);
+                    gluDisk(m_quadricPulsarSpinAxisTop1, 0, 0.020, 32, 8);
                 }
                 glPopMatrix();
                 glPushMatrix();
                 {
                     glTranslatef(0.0, 0.0, 5.0);
-                    gluDisk(m_quadricPulsarSpinAxisTop2, 0, 0.025, 32, 8);
+                    gluDisk(m_quadricPulsarSpinAxisTop2, 0, 0.020, 32, 8);
                 }
                 glPopMatrix();
                 glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
@@ -326,19 +366,19 @@ void PulsarAnimationWidget::paintGL()
                 glPushMatrix();
                 {
                     glTranslatef(0.0, 0.0, -5.0);
-                    gluCylinder(m_quadricPulsarMagneticAxis, 0.025, 0.025, 10.0, 32, 1);
+                    gluCylinder(m_quadricPulsarMagneticAxis, 0.020, 0.020, 10.0, 32, 1);
                 }
                 glPopMatrix();
                 glPushMatrix();
                 {
                     glTranslatef(0.0, 0.0, -5.0);
-                    gluDisk(m_quadricPulsarSpinAxisTop1, 0, 0.025, 32, 8);
+                    gluDisk(m_quadricPulsarSpinAxisTop1, 0, 0.020, 32, 8);
                 }
                 glPopMatrix();
                 glPushMatrix();
                 {
                     glTranslatef(0.0, 0.0, 5.0);
-                    gluDisk(m_quadricPulsarSpinAxisTop2, 0, 0.025, 32, 8);
+                    gluDisk(m_quadricPulsarSpinAxisTop2, 0, 0.020, 32, 8);
                 }
                 glPopMatrix();
                 glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
diff --git a/src/pulsaranimationwidget.h b/src/pulsaranimationwidget.h
index 7d56d3fd15d83e479f5631dc289d657336f9d99e..01f3f1e5e72c4c30850a6829bc735f635590e2dd 100644
--- a/src/pulsaranimationwidget.h
+++ b/src/pulsaranimationwidget.h
@@ -81,6 +81,9 @@ private:
     GLUquadricObj *m_quadricPulsarSpinAxisTop1;
     GLUquadricObj *m_quadricPulsarSpinAxisTop2;
     GLUquadricObj *m_quadricPulsarMagneticAxis;
+    GLUquadricObj *m_quadricLineOfSight;
+    GLUquadricObj *m_quadricLineOfSightTop1;
+    GLUquadricObj *m_quadricLineOfSightTop2;
 
     GLuint m_pulsarTexture;
     GLuint m_backgroundTexture;