diff --git a/src/video/kmsdrm/SDL_kmsdrmmouse.c b/src/video/kmsdrm/SDL_kmsdrmmouse.c
index 2d62861..dc9e37e 100644
--- a/src/video/kmsdrm/SDL_kmsdrmmouse.c
+++ b/src/video/kmsdrm/SDL_kmsdrmmouse.c
@@ -44,7 +44,7 @@
 /**********************************/
 
 int
-drm_atomic_movecursor(KMSDRM_CursorData *curdata, int x, int y)
+drm_atomic_movecursor(KMSDRM_CursorData *curdata, uint16_t x, uint16_t y)
 {
     SDL_DisplayData *dispdata = (SDL_DisplayData *)SDL_GetDisplayDriverData(0);
 
diff --git a/src/video/kmsdrm/SDL_kmsdrmmouse.h b/src/video/kmsdrm/SDL_kmsdrmmouse.h
index 8bb1200..ebc4728 100644
--- a/src/video/kmsdrm/SDL_kmsdrmmouse.h
+++ b/src/video/kmsdrm/SDL_kmsdrmmouse.h
@@ -35,8 +35,8 @@
     struct gbm_bo *bo;
     struct plane *plane;
     uint32_t       crtc_id;
-    int            hot_x, hot_y;
-    int            w, h;
+    uint16_t       hot_x, hot_y;
+    uint16_t       w, h;
     /* The video devide implemented on SDL_kmsdrmvideo.c 
      * to be used as _THIS pointer in SDL_kmsdrmvideo.c 
      * functions that need it. */
diff --git a/src/video/kmsdrm/SDL_kmsdrmvideo.c b/src/video/kmsdrm/SDL_kmsdrmvideo.c
index aff994e..768b9af 100644
--- a/src/video/kmsdrm/SDL_kmsdrmvideo.c
+++ b/src/video/kmsdrm/SDL_kmsdrmvideo.c
@@ -68,7 +68,7 @@
                              resources->count_connectors, resources->count_encoders, resources->count_crtcs);
 
                 if (resources->count_connectors > 0 && resources->count_encoders > 0 && resources->count_crtcs > 0) {
-                    for (int i = 0; i < resources->count_connectors; i++) {
+                    for (unsigned int i = 0; i < resources->count_connectors; i++) {
                         drmModeConnector *conn = KMSDRM_drmModeGetConnector(drm_fd, resources->connectors[i]);
 
                         if (!conn) {
@@ -95,9 +95,9 @@
     return available;
 }
 
-static int get_dricount(void)
+static unsigned int get_dricount(void)
 {
-    int devcount = 0;
+    unsigned int devcount = 0;
     struct dirent *res;
     struct stat sb;
     DIR *folder;
@@ -117,7 +117,7 @@
     folder = opendir(KMSDRM_DRI_PATH);
     if (folder) {
         while ((res = readdir(folder))) {
-            int len = SDL_strlen(res->d_name);
+            size_t len = SDL_strlen(res->d_name);
             if (len > 4 && SDL_strncmp(res->d_name, "card", 4) == 0) {
                 devcount++;
             }
@@ -131,8 +131,8 @@
 static int
 get_driindex(void)
 {
-    const int devcount = get_dricount();
-    int i;
+    const unsigned int devcount = get_dricount();
+    unsigned int i;
 
     for (i = 0; i < devcount; i++) {
         if (check_modesetting(i)) {
@@ -314,13 +314,13 @@
 
 /* Get the plane_id of a plane that is of the specified plane type (primary,
    overlay, cursor...) and can use the CRTC we have chosen previously. */ 
-static uint32_t get_plane_id(_THIS, uint32_t plane_type)
+static int get_plane_id(_THIS, uint32_t plane_type)
 {
     drmModeRes *resources = NULL;
     drmModePlaneResPtr plane_resources = NULL;
     uint32_t i, j;
-    uint32_t crtc_index = 0;
-    uint32_t ret = -EINVAL;
+    unsigned int crtc_index = 0;
+    int ret = -EINVAL;
     int found = 0;
 
     SDL_VideoData *viddata = ((SDL_VideoData *)_this->driverdata);
@@ -414,7 +414,7 @@
         (*plane)->props_info = SDL_calloc((*plane)->props->count_props,
             sizeof((*plane)->props_info));	
 
-        for (int i = 0; i < (*plane)->props->count_props; i++) {
+        for (unsigned int i = 0; i < (*plane)->props->count_props; i++) {
             (*plane)->props_info[i] = KMSDRM_drmModeGetProperty(viddata->drm_fd,
                 (*plane)->props->props[i]);
         }
@@ -495,10 +495,10 @@
     if (add_plane_property(dispdata->atomic_req, info->plane, "CRTC_Y", info->crtc_y) < 0)
         return SDL_SetError("Failed to set plane CRTC_Y prop");
 
-    /* Only set the IN_FENCE aqnd OUT_FENCE props if we're operationg on the display plane,
+    /* Set the IN_FENCE and OUT_FENCE props only if we're operating on the display plane,
        since that's the only plane for which we manage who and when should access the buffers
        it uses. */
-    if ((info->plane == dispdata->display_plane) && (dispdata->kms_in_fence_fd != -1))
+    if (info->plane == dispdata->display_plane && dispdata->kms_in_fence_fd != -1)
     {
 	if (add_crtc_property(dispdata->atomic_req, dispdata->crtc, "OUT_FENCE_PTR",
 			          VOID2U64(&dispdata->kms_out_fence_fd)) < 0)
@@ -904,7 +904,7 @@
     }
 
     /* Iterate on the available connectors to find a connected connector. */
-    for (int i = 0; i < resources->count_connectors; i++) {
+    for (unsigned int i = 0; i < resources->count_connectors; i++) {
         drmModeConnector *conn = KMSDRM_drmModeGetConnector(viddata->drm_fd, resources->connectors[i]);
 
         if (!conn) {
@@ -927,7 +927,7 @@
     }
 
     /* Try to find the connector's current encoder */
-    for (int i = 0; i < resources->count_encoders; i++) {
+    for (unsigned int i = 0; i < resources->count_encoders; i++) {
         encoder = KMSDRM_drmModeGetEncoder(viddata->drm_fd, resources->encoders[i]);
 
         if (!encoder) {
@@ -945,7 +945,7 @@
 
     if (!encoder) {
         /* No encoder was connected, find the first supported one */
-        for (int i = 0, j; i < resources->count_encoders; i++) {
+        for (unsigned int i = 0, j; i < resources->count_encoders; i++) {
             encoder = KMSDRM_drmModeGetEncoder(viddata->drm_fd, resources->encoders[i]);
 
             if (!encoder) {
@@ -979,7 +979,7 @@
 
     /* If no CRTC was connected to the encoder, find the first CRTC that is supported by the encoder, and use that. */
     if (!dispdata->crtc->crtc) {
-        for (int i = 0; i < resources->count_crtcs; i++) {
+        for (unsigned int i = 0; i < resources->count_crtcs; i++) {
             if (encoder->possible_crtcs & (1 << i)) {
                 encoder->crtc_id = resources->crtcs[i];
                 dispdata->crtc->crtc = KMSDRM_drmModeGetCrtc(viddata->drm_fd, encoder->crtc_id);
@@ -1059,7 +1059,7 @@
     dispdata->crtc->props_info = SDL_calloc(dispdata->crtc->props->count_props,
         sizeof(dispdata->crtc->props_info));	
 
-    for (int i = 0; i < dispdata->crtc->props->count_props; i++) {
+    for (unsigned int i = 0; i < dispdata->crtc->props->count_props; i++) {
 	dispdata->crtc->props_info[i] = KMSDRM_drmModeGetProperty(viddata->drm_fd,
         dispdata->crtc->props->props[i]);
     }
@@ -1071,7 +1071,7 @@
     dispdata->connector->props_info = SDL_calloc(dispdata->connector->props->count_props,
         sizeof(dispdata->connector->props_info));	
 
-    for (int i = 0; i < dispdata->connector->props->count_props; i++) {
+    for (unsigned int i = 0; i < dispdata->connector->props->count_props; i++) {
 	dispdata->connector->props_info[i] = KMSDRM_drmModeGetProperty(viddata->drm_fd,
         dispdata->connector->props->props[i]);
     }
@@ -1194,6 +1194,13 @@
 int
 KMSDRM_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode)
 {
+    /************************************************************************/
+    /* DO NOT add dynamic videomode changes unless you can REALLY test      */
+    /* on all available KMS drivers and fix them in-kernel, and also test   */
+    /* all SDL2 software: things will fail one way or another, and it       */
+    /* greatly increases backend complexiity thus compromising it's         */
+    /* maintenance. It's NOT as easy as reconstructing GBM and EGL surfaces.*/
+    /************************************************************************/
     return 0;
 }
 
@@ -1237,7 +1244,7 @@
        seem odd to support multiple fullscreen windows, some apps create an
        extra window as a dummy surface when working with multiple contexts */
     if (viddata->num_windows >= viddata->max_windows) {
-        int new_max_windows = viddata->max_windows + 1;
+        unsigned int new_max_windows = viddata->max_windows + 1;
         viddata->windows = (SDL_Window **)SDL_realloc(viddata->windows,
               new_max_windows * sizeof(SDL_Window *));
         viddata->max_windows = new_max_windows;
@@ -1274,11 +1281,11 @@
     /* Remove from the internal window list */
     viddata = windata->viddata;
 
-    for (int i = 0; i < viddata->num_windows; i++) {
+    for (unsigned int i = 0; i < viddata->num_windows; i++) {
         if (viddata->windows[i] == window) {
             viddata->num_windows--;
 
-            for (int j = i; j < viddata->num_windows; j++) {
+            for (unsigned int j = i; j < viddata->num_windows; j++) {
                 viddata->windows[j] = viddata->windows[j + 1];
             }
 
diff --git a/src/video/kmsdrm/SDL_kmsdrmvideo.h b/src/video/kmsdrm/SDL_kmsdrmvideo.h
index 10d7006..c4c3a40 100644
--- a/src/video/kmsdrm/SDL_kmsdrmvideo.h
+++ b/src/video/kmsdrm/SDL_kmsdrmvideo.h
@@ -49,8 +49,8 @@
     struct gbm_device *gbm_dev;
 
     SDL_Window **windows;
-    int max_windows;
-    int num_windows;
+    unsigned int max_windows;
+    unsigned int num_windows;
 } SDL_VideoData;
 
 struct plane {
@@ -119,20 +119,21 @@
     uint32_t fb_id;     /* DRM framebuffer ID */
 } KMSDRM_FBInfo;
 
-/* Info passed to set_plane_props calls. */
+/* Info passed to set_plane_props calls. hdisplay and vdisplay in a drm mode are uint16_t,
+   so that's what we use for sizes and positions here. IDs are uint32_t as always. */
 typedef struct KMSDRM_PlaneInfo
 {
     struct plane *plane;
     uint32_t fb_id;
     uint32_t crtc_id;
-    int src_x;
-    int src_y;
-    int src_w;
-    int src_h;
-    int crtc_x;
-    int crtc_y;
-    int crtc_w;
-    int crtc_h;
+    uint16_t src_x;
+    uint16_t src_y;
+    uint16_t src_w;
+    uint16_t src_h;
+    uint16_t crtc_x;
+    uint16_t crtc_y;
+    uint16_t crtc_w;
+    uint16_t crtc_h;
 } KMSDRM_PlaneInfo;
 
 /* Helper functions */
