gl:  setting scratch surface for shadow differently

setting width and height of the shadow scratch surface differently instead
of using same size can sometime save memory, but at risk of re-generating
it