diff --git a/src/pulsaranimationwidget.cpp b/src/pulsaranimationwidget.cpp
index 550476859f8574b0b1ba7476c46775f1690b2489..7fe75a3937ecbf9b45a551e56eb8c7d0dafa4882 100644
--- a/src/pulsaranimationwidget.cpp
+++ b/src/pulsaranimationwidget.cpp
@@ -679,9 +679,16 @@ void PulsarAnimationWidget::setPulsarMagneticAxisInclination(const int degrees)
 
 void PulsarAnimationWidget::setPulsarBeamAngle(const int degrees)
 {
-    m_pulsarBeamAngle = degrees;
+    double beamTexturePeakCorrectionFactor = 0.83;
+    double correctedOuterRadius;
 
+    // compute visual radius
     m_pulsarBeamOuterRadius = tan(deg2rad * degrees * 0.5f) * m_pulsarBeamLength;
+
+    // compute corrected angle for pulse profile
+    correctedOuterRadius = m_pulsarBeamOuterRadius * beamTexturePeakCorrectionFactor;
+    m_pulsarBeamAngle = 2 * atan(correctedOuterRadius / m_pulsarBeamLength) * 180.0/PI;
+
     updatePulseProfile();
 
     updateGL();