Nicely done! A few suggestions:
Allow a right-click to clear a Black cell. Allow a left-click to clear a Red-X cell.
Display the title of the puzzle after it is solved (a little reward for the user).
Avoid drag errors: When the user is clicking-and-dragging a range of cells, don't mark cells if the mouse strays off the current row/column that they are filling.
When starting a puzzle, pre-fill all-zero rows/columns with Red-X's.
Reduce the user's need to count: When the mouse is over a Black cell, display how many Black cells are in that group (horizontally and vertically). Similarly when over an empty cell, display how many empty cells are in that group (horizontally and vertically).
Help the user find mistakes: Grey out the row/column hint number(s) when they are satisfied (but not necessarily correct) in the grid.