diff --git a/requirements/required.txt b/requirements/required.txt
index 8dadad11..49c7199c 100644
--- a/requirements/required.txt
+++ b/requirements/required.txt
@@ -1,10 +1,10 @@
 # setup
-setuptools==63.1.0
+setuptools==63.2.0
 
 # install
 einops==0.4.1
 fiona==1.9a2
-kornia==0.6.5
+kornia==0.6.6
 matplotlib==3.5.2
 numpy==1.23.1;python_version>='3.8'
 omegaconf==2.2.2
diff --git a/torchgeo/datasets/geo.py b/torchgeo/datasets/geo.py
index c74833d8..07900368 100644
--- a/torchgeo/datasets/geo.py
+++ b/torchgeo/datasets/geo.py
@@ -611,12 +611,12 @@ class VectorDataset(GeoDataset):
         )
         if shapes:
             masks = rasterio.features.rasterize(
-                shapes, out_shape=(int(height), int(width)), transform=transform
+                shapes, out_shape=(round(height), round(width)), transform=transform
             )
         else:
             # If no features are found in this query, return an empty mask
             # with the default fill value and dtype used by rasterize
-            masks = np.zeros((int(height), int(width)), dtype=np.uint8)
+            masks = np.zeros((round(height), round(width)), dtype=np.uint8)
 
         sample = {"mask": torch.tensor(masks), "crs": self.crs, "bbox": query}
 

diff --git a/tests/datasets/test_geo.py b/tests/datasets/test_geo.py
index 5742134d..5abb7766 100644
--- a/tests/datasets/test_geo.py
+++ b/tests/datasets/test_geo.py
@@ -223,7 +223,7 @@ class TestVectorDataset:
     def test_empty_shapes(self, dataset: CustomVectorDataset) -> None:
         query = BoundingBox(1.1, 1.9, 1.1, 1.9, 0, 0)
         x = dataset[query]
-        assert torch.equal(x["mask"], torch.zeros(7, 7, dtype=torch.uint8))
+        assert torch.equal(x["mask"], torch.zeros(8, 8, dtype=torch.uint8))
 
     def test_invalid_query(self, dataset: CustomVectorDataset) -> None:
         query = BoundingBox(3, 3, 3, 3, 0, 0)

VectorDataset incorrect sample shape 
### Description

Querying a sample from a VectorDataset object returns (sometimes?) a mask with incorrect shape.

This is caused by not rounding the calculated width and height pixel values to the nearest integer, and just taking the `int(width)` and `int(height)` values instead for `masks = rasterio.features.rasterize` in [torchgeo.datasets.geo.py:614](https://github.com/microsoft/torchgeo/blob/b41b6d68f99edfbe4d82b31f6f9b16cbd33f485e/torchgeo/datasets/geo.py#L614).

### Steps to reproduce

Run the following code to reproduce the error:
```
from torchgeo.datasets import CanadianBuildingFootprints
from torchgeo.samplers import RandomGeoSampler

cbf_dataset = CanadianBuildingFootprints(download=True)  # or any other VectorDataset-based dataset

size = 512

sampler = RandomGeoSampler(cbf_dataset, size=size, length=100)  # or any other sampler
query = next(iter(sampler))

sample = cbf_dataset[query]

print(sample["mask"].shape)
assert sample["mask"].shape[0] == size, sample["mask"].shape
assert sample["mask"].shape[1] == size, sample["mask"].shape
```

### Version

0.3.0
tests/datasets/test_geo.py::TestVectorDataset::test_empty_shapes
tests/datasets/test_geo.py::TestGeoDataset::test_getitem tests/datasets/test_geo.py::TestGeoDataset::test_len tests/datasets/test_geo.py::TestGeoDataset::test_crs[crs0] tests/datasets/test_geo.py::TestGeoDataset::test_crs[crs1] tests/datasets/test_geo.py::TestGeoDataset::test_and_two tests/datasets/test_geo.py::TestGeoDataset::test_and_three tests/datasets/test_geo.py::TestGeoDataset::test_and_four tests/datasets/test_geo.py::TestGeoDataset::test_or_two tests/datasets/test_geo.py::TestGeoDataset::test_or_three tests/datasets/test_geo.py::TestGeoDataset::test_or_four tests/datasets/test_geo.py::TestGeoDataset::test_str tests/datasets/test_geo.py::TestGeoDataset::test_picklable tests/datasets/test_geo.py::TestGeoDataset::test_abstract tests/datasets/test_geo.py::TestGeoDataset::test_and_nongeo tests/datasets/test_geo.py::TestRasterDataset::test_getitem_single_file[True] tests/datasets/test_geo.py::TestRasterDataset::test_getitem_single_file[False] tests/datasets/test_geo.py::TestRasterDataset::test_getitem_separate_files[True] tests/datasets/test_geo.py::TestRasterDataset::test_getitem_separate_files[False] tests/datasets/test_geo.py::TestRasterDataset::test_getitem_uint_dtype tests/datasets/test_geo.py::TestRasterDataset::test_invalid_query[True] tests/datasets/test_geo.py::TestRasterDataset::test_invalid_query[False] tests/datasets/test_geo.py::TestRasterDataset::test_no_data tests/datasets/test_geo.py::TestVectorDataset::test_getitem tests/datasets/test_geo.py::TestVectorDataset::test_invalid_query tests/datasets/test_geo.py::TestVectorDataset::test_no_data tests/datasets/test_geo.py::TestNonGeoDataset::test_getitem tests/datasets/test_geo.py::TestNonGeoDataset::test_len tests/datasets/test_geo.py::TestNonGeoDataset::test_add_two tests/datasets/test_geo.py::TestNonGeoDataset::test_add_three tests/datasets/test_geo.py::TestNonGeoDataset::test_add_four tests/datasets/test_geo.py::TestNonGeoDataset::test_str tests/datasets/test_geo.py::TestNonGeoDataset::test_abstract tests/datasets/test_geo.py::TestVisionDataset::test_deprecation tests/datasets/test_geo.py::TestNonGeoClassificationDataset::test_getitem tests/datasets/test_geo.py::TestNonGeoClassificationDataset::test_len tests/datasets/test_geo.py::TestNonGeoClassificationDataset::test_add_two tests/datasets/test_geo.py::TestNonGeoClassificationDataset::test_add_three tests/datasets/test_geo.py::TestNonGeoClassificationDataset::test_add_four tests/datasets/test_geo.py::TestNonGeoClassificationDataset::test_str tests/datasets/test_geo.py::TestVisionClassificationDataset::test_deprecation tests/datasets/test_geo.py::TestIntersectionDataset::test_getitem tests/datasets/test_geo.py::TestIntersectionDataset::test_len tests/datasets/test_geo.py::TestIntersectionDataset::test_str tests/datasets/test_geo.py::TestIntersectionDataset::test_nongeo_dataset tests/datasets/test_geo.py::TestIntersectionDataset::test_different_crs tests/datasets/test_geo.py::TestIntersectionDataset::test_different_res tests/datasets/test_geo.py::TestIntersectionDataset::test_no_overlap tests/datasets/test_geo.py::TestIntersectionDataset::test_invalid_query tests/datasets/test_geo.py::TestUnionDataset::test_getitem tests/datasets/test_geo.py::TestUnionDataset::test_len tests/datasets/test_geo.py::TestUnionDataset::test_str tests/datasets/test_geo.py::TestUnionDataset::test_nongeo_dataset tests/datasets/test_geo.py::TestUnionDataset::test_different_crs tests/datasets/test_geo.py::TestUnionDataset::test_different_res tests/datasets/test_geo.py::TestUnionDataset::test_no_overlap tests/datasets/test_geo.py::TestUnionDataset::test_invalid_query