Interface for a transformable grid
I think you should use aggregation.

It's either:

class Mesh&lt;T&gt; : ITransformable&lt;T&gt;
{
    public Mesh(IGrid&lt;T&gt; grid, ....)
    {
        Grid = grid;
        ......
    }

    public IGrid&lt;T&gt; Grid { get; private set; }
    .....
}


or:

class Transformer&lt;T&gt; : ITransformer&lt;T&gt;
{
    public T Slice(IGrid&lt;T&gt;, int x, int y, int width, int height)
    {
        ...
    }
    ....
}


It's hard to tell which is better without good understanding of your design (which I don't have). But generally I would prefer the second option.

Also, your IGrid implementation looks really weird. You are saying that you want to implement 2D array using 1D array, yet you use T[][] _values; in your implementation. So, what's the point? There is also a System.Windows.Size class, so I don't understand why would you want to use a Point.