diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index 6c6a3b8..2d697bb 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -3204,7 +3204,7 @@
     ok(hwndedit2 == NULL, "Expected Edit window not to be created\n");
     ok(!IsWindow(hwndedit), "Expected Edit window to be destroyed\n");
     ok(GetFocus() == hwnd, "Expected List to be focused\n");
-    /* and value greater then max item index */
+    /* and value greater than max item index */
     hwndedit = (HWND)SendMessage(hwnd, LVM_EDITLABEL, 0, 0);
     ok(IsWindow(hwndedit), "Expected Edit window to be created\n");
     ok(GetFocus() == hwndedit, "Expected Edit to be focused\n");
@@ -3312,7 +3312,7 @@
     r = SendMessage(header, HDM_GETUNICODEFORMAT, 0, 0);
     expect(1, r);
     DestroyWindow(hwnd);
-    /* recieving error code defaulting to ansi */
+    /* receiving error code defaulting to ansi */
     notifyFormat = 0;
     hwnd = create_listview_controlW(0, hwndparentW);
     ok(hwnd != NULL, "failed to create a listview window\n");
@@ -3323,7 +3323,7 @@
     r = SendMessage(header, HDM_GETUNICODEFORMAT, 0, 0);
     expect(1, r);
     DestroyWindow(hwnd);
-    /* recieving ansi code from unicode window, use it */
+    /* receiving ansi code from unicode window, use it */
     notifyFormat = NFR_ANSI;
     hwnd = create_listview_controlW(0, hwndparentW);
     ok(hwnd != NULL, "failed to create a listview window\n");
@@ -3484,9 +3484,10 @@
 
     if (!ret)
     {
-        win_skip("A problem during context activation occured.\n");
+        win_skip("A problem during context activation occurred.\n");
         DeleteFileA(manifest_name);
     }
+
     else
     {
         /* this is a XP SP3 failure workaround */
diff --git a/dlls/kernel32/tests/volume.c b/dlls/kernel32/tests/volume.c
index 2c25465..4f8c1c0 100644
--- a/dlls/kernel32/tests/volume.c
+++ b/dlls/kernel32/tests/volume.c
@@ -160,7 +160,7 @@
         "GetVolumeNameForVolumeMountPointA failed on %s, last=%d\n",
         temp_path, GetLastError());
 
-    /* Try on a non-existent dos drive */
+    /* Try on a nonexistent dos drive */
     path[2] = 0;
     for (;path[0] <= 'z'; path[0]++) {
         ret = QueryDosDeviceA( path, volume, len);
@@ -174,7 +174,7 @@
             "GetVolumeNameForVolumeMountPointA failed on %s, last=%d\n",
             path, GetLastError());
 
-        /* Try without trailing \ and on a non-existent dos drive  */
+        /* Try without trailing \ and on a nonexistent dos drive  */
         path[2] = 0;
         ret = pGetVolumeNameForVolumeMountPointA(path, volume, len);
         ok(ret == FALSE && GetLastError() == ERROR_INVALID_NAME,
diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c
index d4e3941..54ab987 100644
--- a/dlls/mlang/tests/mlang.c
+++ b/dlls/mlang/tests/mlang.c
@@ -60,7 +60,7 @@
 
 /* en, ar and zh use SUBLANG_NEUTRAL for the rfc1766 name without the country
    all others suppress the country with SUBLANG_DEFAULT.
-   For 3 letter language codes, the rfc1766 is to small for the country */
+   For 3 letter language codes, the rfc1766 is too small for the country */
 
 static const lcid_table_entry  lcid_table[] = {
     {"e",     -1,       E_FAIL},
diff --git a/dlls/msctf/tests/inputprocessor.c b/dlls/msctf/tests/inputprocessor.c
index 97089bb..61389cf 100644
--- a/dlls/msctf/tests/inputprocessor.c
+++ b/dlls/msctf/tests/inputprocessor.c
@@ -1321,7 +1321,7 @@
     GUID g2;
 
     hr = ITfThreadMgr_QueryInterface(g_tm, &IID_ITfClientId, (LPVOID*)&pcid);
-    ok(SUCCEEDED(hr),"Unable to aquire ITfClientId interface\n");
+    ok(SUCCEEDED(hr),"Unable to acquire ITfClientId interface\n");
 
     CoCreateGuid(&g2);
 
diff --git a/dlls/opengl32/tests/opengl.c b/dlls/opengl32/tests/opengl.c
index 3078b79..2ced97d 100644
--- a/dlls/opengl32/tests/opengl.c
+++ b/dlls/opengl32/tests/opengl.c
@@ -320,7 +320,7 @@
     }
 
     /* Test 3: Share display lists with a context which already shares display lists with another context.
-     * According to MSDN the second paramater can't share any display lists but some buggy drivers might allow it */
+     * According to MSDN the second parameter cannot share any display lists but some buggy drivers might allow it */
     hglrc3 = wglCreateContext(winhdc);
     if(hglrc3)
     {
