¿Por qué mi sombra de CALayer se ve borrosa en las pantallas de retina cuando se utiliza shadowPath con shadowRadius establecido en 0?

Tengo un button al que agrego una sombra para que me guste esto:

b.backgroundColor = [UIColor colorWithRed:0.820 green:0.878 blue:0.941 alpha:1.000]; b.layer.cornerRadius = 3; b.layer.shadowOffset = CGSizeMake(2, 2); b.layer.shadowOpacity = 0.2; b.layer.shadowRadius = 0; 

Eso funciona muy bien:

sombra retina sin sombra

Si utilizo la ruta de acceso sombra de esta manera:

 b.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:b.bounds cornerRadius:b.layer.cornerRadius].CGPath; 

La sombra está borrosa en los dispositivos de retina:

introduzca la descripción de la imagen aquí

Está bien en dispositivos sin retina y parece funcionar correctamente si shadowRadius no es cero. He intentado configurar contentsScale and rasterizationScale a 2 pero no afecta a la sombra.

¿Alguna otra idea?

A partir de iOS 9.0, la propiedad contentsScale de CALayer también afectará la escala de rasterización de shadowPath . En otras palabras, ajustar la escala del contentsScale de contentsScale to Screen solucionará su problema.