@Override public void draw(
		HDR64Buffer dest, int x, int y,
		int clipLeft, int clipTop, int clipRight, int clipBottom
	) {
		assert clipLeft >= 0;
		assert clipTop >= 0;
		assert clipRight <= dest.width;
		assert clipBottom <= dest.height;
		
		// TODO: more efficiently!
		int skipY = clipTop  > y ? clipTop  - y : 0;
		int skipX = clipLeft > x ? clipLeft - x : 0;
		for( int sy=skipY, dy=y+skipY; sy<height && dy<clipBottom; ++sy, ++dy ) {
			for(
				int sx=skipX, dx=x+skipX, si=width*sy+sx, di=dest.width*dy+dx;
				sx<width && dx<clipRight;
				++sx, ++dx, ++si, ++di
			) {
				long v = data[si];
				// TODO: Handle alpha better!
				if( (v & 0x8000000000000000l) == 0x8000000000000000l ) {
					dest.data[di] = v;
				}
			}
		}
	}