>>650
ざっと見た感じだけど
ybl = y + h +(int) ((i+1)<gradients.length ? gradients[i+1] * gradient : 0);
ybr = y + h +(int) ((i+1)<gradients.length ? gradients[i+1] * gradient : 0);

あと↓みたいにすればxtlとかdouble使えると思う
g.drawPolygon(new int[] { (int)xtl, (int)xtr, (int)xbl, (int)xbr }, new int[] { (int)ytl, (int)ytr, (int)ybl, (int)ybr }, 4);