Shading and anti-aliasing would be about 2 lines of extra code if you rewrite this in dotnet.