The techniques I know about, nicely explained at http://demosthenes.info/blog/534/Crossbrowser-Image-Blur:
1..If you have an image that has the same color on all the outside edges, as in the example above, you could set the background-color of the body or a container element to the same color. (FYI; doesn't really apply to you, at least not in your fiddle).
2..Use the clip property to trim the edges of the image. clip is always stated in the following order:
clip: rect( top, offset of right clip from left side, offset of bottom from top, left)
For the example above, the image is 367px wide × 459 pixels high and the blur 2 pixels, so the clip would be stated as:
clip: rect(2px,365px,457px,2px);
(Note that clip is only applied to elements that have position: absolute applied to them. If you wanted to gain support in IE8 and earlier, remember to drop the px on the end of the values). (No idea if you're laying out photos in a stack, a grid, or just callouts, etc. Could be appropriate if you can swallow the absolute positioning.)
3..Wrap the image in a containing element (a , for example) that is slightly smaller than the image, applying overflow: hidden to the outer element and moving the image to the left and up slightly to eliminate the visible blur on those edges.
--
Also, throwing a border around the image seems to help at least in Webkit, but I haven't tested it extensively.
.item img{
transition:all .5s ;
border:1px solid #000;
}
-webkit-transform:scale(1.0)
seems like it ought to be more effective than 1.2... but although it does keep the edges crisp, it doesn't do anything about the unpleasant green effect that forms around the image during the transition. – Author