@@ -80,20 +80,23 @@ function texture(redo, ctx, src) {
8080}
8181
8282function gradient(ctx, grad) {
83− var g;
84− if (grad.ctor === 'Linear') {
85− var p1 = grad._1, p2 = grad._2;
86− g = ctx.createLinearGradient(p1._0, p1._1, p2._0, p2._1);
87− } else {
88− var p1 = grad._1, p2 = grad._3;
89− g = ctx.createRadialGradient(p1._0, p1._1, grad._2, p2._0, p2._1, grad._4);
90− }
91− var stops = fromList(grad._0);
92− for (var i = stops.length; i--; ) {
93− var stop = stops[i];
94− g.addColorStop(stop._0, extract(stop._1));
95− }
96− return g;
83+ var g;
84+ var stops = [];
85+ if (grad.ctor === 'Linear') {
86+ var p0 = grad._0, p1 = grad._1;
87+ g = ctx.createLinearGradient(p0._0, -p0._1, p1._0, -p1._1);
88+ stops = fromList(grad._2);
89+ } else {
90+ var p0 = grad._0, p2 = grad._2;
91+ g = ctx.createRadialGradient(p0._0, -p0._1, grad._1, p2._0, -p2._1, grad._3);
92+ stops = fromList(grad._4);
93+ }
94+ var len = stops.length;
95+ for (var i = 0; i < len; ++i) {
96+ var stop = stops[i];
97+ g.addColorStop(stop._0, extract(stop._1));
98+ }
99+ return g;
97100}
98101
99102function drawShape(redo, ctx, style, path) {