diff --git a/src/pulsaranimationwidget.cpp b/src/pulsaranimationwidget.cpp
index 8fd30332df971ba4bd27ff8a1abea87e75682d9d..c43f5a670c9517fc9d5824818cbd5154c8a3d46f 100644
--- a/src/pulsaranimationwidget.cpp
+++ b/src/pulsaranimationwidget.cpp
@@ -42,9 +42,12 @@ PulsarAnimationWidget::PulsarAnimationWidget(QWidget *parent) :
 	m_quadricPulsar = NULL;
 	m_quadricPulsarCone1 = NULL;
 	m_quadricPulsarCone2 = NULL;
+	m_quadricPulsarSpinAxis = NULL;
+	m_quadricPulsarMagneticAxis1 = NULL;
+	m_quadricPulsarMagneticAxis2 = NULL;
 
-	m_pulsarTexture = NULL;
-	m_backgroundTexture = NULL;
+	m_pulsarTexture = 0;
+	m_backgroundTexture = 0;
 
 	m_framesPerSecond = 25;
 
@@ -67,6 +70,9 @@ PulsarAnimationWidget::~PulsarAnimationWidget()
 	if(m_quadricPulsar) gluDeleteQuadric(m_quadricPulsar);
 	if(m_quadricPulsarCone1) gluDeleteQuadric(m_quadricPulsarCone1);
 	if(m_quadricPulsarCone2) gluDeleteQuadric(m_quadricPulsarCone2);
+	if(m_quadricPulsarSpinAxis) gluDeleteQuadric(m_quadricPulsarSpinAxis);
+	if(m_quadricPulsarMagneticAxis1) gluDeleteQuadric(m_quadricPulsarMagneticAxis1);
+	if(m_quadricPulsarMagneticAxis2) gluDeleteQuadric(m_quadricPulsarMagneticAxis2);
 
 	if(m_pulsarTexture) deleteTexture(m_pulsarTexture);
 	if(m_backgroundTexture) deleteTexture(m_backgroundTexture);
@@ -107,10 +113,17 @@ void PulsarAnimationWidget::initializeGL()
 	m_quadricPulsar = gluNewQuadric();
     m_quadricPulsarCone1 = gluNewQuadric();
     m_quadricPulsarCone2 = gluNewQuadric();
+    m_quadricPulsarSpinAxis = gluNewQuadric();
+    m_quadricPulsarMagneticAxis1 = gluNewQuadric();
+    m_quadricPulsarMagneticAxis2 = gluNewQuadric();
+
     gluQuadricNormals(m_quadricPulsarOrbitPlane, GLU_SMOOTH);
     gluQuadricNormals(m_quadricPulsar, GLU_SMOOTH);
     gluQuadricNormals(m_quadricPulsarCone1, GLU_SMOOTH);
     gluQuadricNormals(m_quadricPulsarCone2, GLU_SMOOTH);
+    gluQuadricNormals(m_quadricPulsarSpinAxis, GLU_SMOOTH);
+    gluQuadricNormals(m_quadricPulsarMagneticAxis1, GLU_SMOOTH);
+    gluQuadricNormals(m_quadricPulsarMagneticAxis2, GLU_SMOOTH);
 
     // load textures
     m_pulsarTexture = bindTexture(QImage(":/textures/resources/texture_pulsar.png"), GL_TEXTURE_2D, GL_RGBA);
@@ -154,6 +167,7 @@ void PulsarAnimationWidget::paintGL()
 	static GLfloat mat_diffuse[] = { 0.5, 0.5, 0.5, 1.0 };
 	static GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
 	static GLfloat low_shininess[] = { 2.5 };
+	static GLfloat translucent[] = { 1.0, 1.0, 1.0, 0.33 };
 
 	glMaterialfv(GL_FRONT, GL_AMBIENT, no_mat);
 	glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
@@ -175,14 +189,27 @@ void PulsarAnimationWidget::paintGL()
 
 		glPushMatrix();
 			// enable texture coordinates and bind texture
-		    glEnable(GL_TEXTURE_2D);
 	        glEnable(GL_TEXTURE_GEN_S);
 	        glEnable(GL_TEXTURE_GEN_T);
 	        glBindTexture(GL_TEXTURE_2D, m_pulsarTexture);
 
+			if(m_cameraInteraction) {
+				glPushMatrix();
+					glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, translucent);
+					glRotatef(90.0, 1.0f, 0.0f, 0.0f);
+					glRotatef(-m_pulsarSpinAxisInclination, 0.0f, 1.0f, 0.0f);
+					glTranslatef(0.0f, 0.0f, -5.0f);
+					gluCylinder(m_quadricPulsarSpinAxis, 0.05f, 0.05f, 10.0f, 32, 1);
+				glPopMatrix();
+			}
+
 	        // FIXME: how to rotate texture?
 			glRotatef(m_pulsarRotationAngle, 0.0f, 1.0f, 0.0f);
 			glRotatef(m_pulsarSpinAxisInclination, 1.0f, 0.0f, 0.0f);
+
+		    glEnable(GL_TEXTURE_2D);
+			glMaterialfv(GL_FRONT, GL_AMBIENT, no_mat);
+			glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
 			gluSphere(m_quadricPulsar, 1.0f, 32, 32);
 
 			// disable texture coordinates
@@ -196,28 +223,43 @@ void PulsarAnimationWidget::paintGL()
 		static GLfloat coneDiffuse[] = { 1.0, 1.0, 0.0, 1.0 };
 		static GLfloat coneSpecular[] = { 1.0, 1.0, 0.5, 1.0 };
 
-		glMaterialfv(GL_FRONT, GL_AMBIENT, coneAmbient);
-		glMaterialfv(GL_FRONT, GL_DIFFUSE, coneDiffuse);
 		glMaterialfv(GL_FRONT, GL_SPECULAR, coneSpecular);
 
 		glPushMatrix();
 			glRotatef(m_pulsarRotationAngle - 90.0f, 0.0f, 1.0f, 0.0f);
 			glRotatef(-m_pulsarMagneticAxisInclination - m_pulsarSpinAxisInclination + 90.0f, 1.0f, 0.0f, 0.0f);
+
+			if(m_cameraInteraction) {
+				glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, translucent);
+				gluCylinder(m_quadricPulsarMagneticAxis1, 0.05f, 0.05f, 5.0f, 32, 1);
+			}
+
 			glTranslatef(0.0f, 0.0f, -4.0f);
+
+			glMaterialfv(GL_FRONT, GL_AMBIENT, coneAmbient);
+			glMaterialfv(GL_FRONT, GL_DIFFUSE, coneDiffuse);
 			gluCylinder(m_quadricPulsarCone1, 0.5f, 0.0f, 3.0f, 32, 32);
 		glPopMatrix();
 
 		glPushMatrix();
 			glRotatef(m_pulsarRotationAngle + 90.0f, 0.0f, 1.0f, 0.0f);
 			glRotatef(m_pulsarMagneticAxisInclination + m_pulsarSpinAxisInclination - 90.0f, 1.0f, 0.0f, 0.0f);
+
+			if(m_cameraInteraction) {
+				glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, translucent);
+				gluCylinder(m_quadricPulsarMagneticAxis2, 0.05f, 0.05f, 5.0f, 32, 1);
+			}
+
 			glTranslatef(0.0f, 0.0f, -4.0f);
+
+			glMaterialfv(GL_FRONT, GL_AMBIENT, coneAmbient);
+			glMaterialfv(GL_FRONT, GL_DIFFUSE, coneDiffuse);
 			gluCylinder(m_quadricPulsarCone2, 0.5f, 0.0f, 3.0f, 32, 32);
 		glPopMatrix();
 	glPopMatrix();
 
 	if(m_cameraInteraction) {
-		static GLfloat pulsarOrbitAmbientDiffuse[] = { 1.0, 1.0, 1.0, 0.33 };
-		glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, pulsarOrbitAmbientDiffuse);
+		glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, translucent);
 
 		glPushMatrix();
 			glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
diff --git a/src/pulsaranimationwidget.h b/src/pulsaranimationwidget.h
index 91e1e92b8eb44762e0c7d07b383aa49cd04a17f6..2787791538432af31e80804a2b5c83e21ae30f13 100644
--- a/src/pulsaranimationwidget.h
+++ b/src/pulsaranimationwidget.h
@@ -70,6 +70,9 @@ protected:
 	GLUquadricObj *m_quadricPulsar;
 	GLUquadricObj *m_quadricPulsarCone1;
 	GLUquadricObj *m_quadricPulsarCone2;
+	GLUquadricObj *m_quadricPulsarSpinAxis;
+	GLUquadricObj *m_quadricPulsarMagneticAxis1;
+	GLUquadricObj *m_quadricPulsarMagneticAxis2;
 
 	GLuint m_pulsarTexture;
 	GLuint m_backgroundTexture;