gl: setting scratch surface width and height differently

Setting scratch surface width and height differently might save memory
in some cases, but it might also have side effect that causes
scratch surface to be re-generated more often.