I suppose I found the reason. It's in the ControlPoint class. Attached the patch for Graphics/Rendering/OpenGL/GL/ControlPoint.hs

On Tue, Oct 18, 2011 at 1:02 PM, Alexey Karakulov <ankarakulov@gmail.com> wrote:
Description:
GLU NURBS are rendered wrongly with newer versions of OpenGL.
E.g. when the 9-point rectangular representation for a circle is used, this picture is a result (instead of a proper circle): http://i.stack.imgur.com/waoRm.png
There are other details at the http://stackoverflow.com/questions/7798662/glu-nurbs-rendered-wrongly

Versions:
The bug appears when OpenGL>=2.3 is used. With older versions the NURBS for circle is rendered correctly:
$ ghc -package OpenGL-2.2.3.0 -package GLUT-2.1.2.1 --make Circle.hs && ./Circle

Platforms tested:
ArchLinux 64-bit, Gentoo (don't know architecture).


The Circle.hs file which draws the NURBS circle is attached.