This projects shows the difference how the not careful functions override of the specialized parent trait can lead to the boxing overhead.
$ sbt
$ clean
$ benchOnly com/pomadchin/raster/bench/LocalTileBench.scala
$ benchOnly com/pomadchin/raster/bench/LocalTileBoxingBench.scala
All inheritents of the original specialized trait, should have narrowed specialized functions declarations. The absence of it in one of the classes in the hierarchy leads to the non specialized method invocation.
The output could be opened via JDK Mission Control with the following results: