Not quite-- linear algebra does right-side multiplication (the right-most matrix in a product is applied first). As far as I know, GLSL matrices are the same. This is pretty much the accepted standard, and it is the same behavior I have implemented in vispy.visuals.transforms. 

The place where we currently deviate from this behavior is in vispy.util.transforms, where all matrices are transposed, and thus must be multiplied in the opposite order. The main reason for this, as far as I know, is that we always represent a vertex array as (N,4), both because it must be uploaded to the GPU this way and because it is more intuitive, especially when you need to add more dimensions like (M,N,4). But in order to multiply an (N,4) array by a (4,4) matrix, you need to transpose either the array or the matrix, and vispy.util.transforms has chosen the latter option, since the alternative looks like ```transformed = np.dot(matrix, position.T).T```