Имеем 2 квадрата (это пример для наглядности, а не конечное решение).
jsfiddle.net/zbj6D/
В левом квадрате используется свойство CSS box-shadow, а в правом — CSS linear-gradient. При этом тень выглядит плавнее градиента, хоть в градиенте вроде как и используется линейная заливка. Как добиться идентичности результатов?