Hmm...
it doesn't work with *4 either... when I set it to 8 it works, but my matrix is empty... Now what exactly does the load function do? It doesn't set the matrix values doesn't it?
my code
FloatBuffer fb = ByteBuffer.allocateDirect(16*

.order(ByteOrder.nativeOrder()).asFloatBuffer();
gl.getFloatv(GL.PROJECTION_MATRIX, Sys.getDirectBufferAddress(fb));
System.out.println(fb.get(gaybuffer));
Matrix4f projectionMatrix = new Matrix4f();
projectionMatrix.load(fb);
System.out.println(projectionMatrix.m00 + "," + projectionMatrix.m01 + "," + projectionMatrix.m02 + "," + projectionMatrix.m03);